Run:
threadnote installThe installer prefers uv, then pipx, then python3 -m pip install --user.
Some corporate machines trust PyPI through certificates installed in the system keychain. Threadnote passes
--native-tls when it uses uv so those system certificates are loaded.
If an older install still fails with invalid peer certificate: UnknownIssuer, retry with:
UV_NATIVE_TLS=1 threadnote installOr use a different Python installer:
threadnote install --package-manager pipx
threadnote install --package-manager pipOn install or first start, OpenViking may download the local embedding model from Hugging Face. If
~/.openviking/logs/server.log shows SSLCertVerificationError, self-signed certificate in certificate chain, or
Failed to download local embedding model, repair the OpenViking Python environment and start again:
threadnote repair --package-manager uv
threadnote doctor --dry-runThreadnote installs pip-system-certs into the OpenViking environment so Python requests can use certificates trusted
by the operating system.
If an older Threadnote release tries to reinstall all of OpenViking and fails while fetching packages such as openai,
install the certificate bridge directly into the existing OpenViking environment:
uv pip install --native-tls --python "$(dirname "$(realpath "$(which openviking-server)")")/python" pip-system-certs
threadnote startThe default OpenViking config uses the local embedding backend. If the server log says llama-cpp-python is missing,
rerun:
threadnote installThe installer repairs this by installing openviking[local-embed].
Current Threadnote installs start the local server by default. If doctor reports
WARN openviking health: connect ECONNREFUSED 127.0.0.1:1933, the local server is not running. Start it and recheck:
threadnote start
threadnote doctor --dry-runCheck whether the server is running:
curl http://127.0.0.1:1933/healthFor detached starts, logs are written to:
~/.openviking/logs/server.log
If start reports that OpenViking did not become healthy, open that log. Certificate failures during the first embedding
model download are covered above.
The default bind address is 127.0.0.1:1933. This does not conflict with projects serving localhost:80,
localhost:443, or custom hostnames from /etc/hosts; those are different host and port bindings.
If another process already uses port 1933, pick a different port:
THREADNOTE_PORT=1934 threadnote start
THREADNOTE_PORT=1934 threadnote mcp-install codex --applyKeep the same port in the agent MCP configuration and in future threadnote invocations.
Skipped files usually matched a secret detector after redaction. Inspect the file manually and either remove the risky content or leave it out of the manifest.
Native OpenViking skill ingestion generates skill overviews with the configured VLM provider. If the server log shows an
OpenAI quota, rate-limit, or authentication error, run seed-skills without --native. The default mode stores
SKILL.md files as searchable resources and does not require native skill overview generation.
After changing ~/.openviking/ov.conf, restart the server:
threadnote stop
threadnote startOpenViking 0.3.12 can be healthy at /health while returning 404 at /mcp. That means the stable server does not
expose the native HTTP MCP endpoint.
Use the default stdio adapter:
threadnote mcp-install claude --apply
claude mcp listmcp-install claude writes user-scoped Claude config by default. This is intentional: local-scoped config only applies
to one repo/project, and the threadnote shim runs the implementation from the checkout that installed it.
Only use --native-http with an OpenViking build that actually exposes /mcp.
Memories live in ~/.openviking/data, so deleting a branch or worktree does not delete stored memories. The launcher
configuration can still point at scripts inside the deleted worktree, though.
From any fresh checkout, run:
threadnote repairrepair reinstalls the threadnote shim, repairs generated config files, starts OpenViking if needed, and rewrites
Codex/Claude/Cursor/Copilot MCP configs to point at the current checkout.
This is expected. Run with --apply after reviewing the command:
threadnote mcp-install codex --applyFor Cursor:
threadnote mcp-install cursor --applyThis updates the global ~/.cursor/mcp.json file. Restart Cursor or open a fresh agent session after changing MCP
config.
For GitHub Copilot in VS Code:
threadnote mcp-install copilot --applyThis updates the VS Code user-profile mcp.json file. Restart VS Code or run MCP: List Servers from the Command
Palette after changing MCP config. If VS Code uses a custom profile path, set THREADNOTE_COPILOT_MCP_CONFIG to that
mcp.json path before running the command.
If Cursor shows an error like expected string, received undefined for Threadnote search, the MCP server started but
Cursor called the tool without JSON arguments. Prefer the Threadnote-named tool and pass a query explicitly:
{"query": "current repo latest handoff"}Current Threadnote adapters expose recall_context for this flow. Older adapters expose search; both require the same
query argument. Run threadnote repair after upgrading if Cursor still lists only stale tools.
Run:
threadnote uninstall --dry-run
threadnote uninstallBy default, uninstall removes Threadnote-managed shims, MCP config, launchd config, and user instruction blocks while
preserving THREADNOTE_HOME. To delete local OpenViking data too, pass --erase-memories.