-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
Symptom-to-fix reference for threadnote. Each section gives the symptom and the fix commands. Logs for the local server live at ~/.openviking/logs/server.log; the default bind address is 127.0.0.1:1933. See Installation and Configuration for setup details.
Symptom: the openviking-server binary is not found.
threadnote installThe installer prefers uv, then pipx, then python3 -m pip install --user.
Symptom: uv reports invalid peer certificate: UnknownIssuer. Some corporate machines trust PyPI through certificates installed in the system keychain.
Threadnote already passes --native-tls when it uses uv so those system certificates are loaded. If an older install still fails, retry with the env flag, or switch to a different Python installer:
UV_NATIVE_TLS=1 threadnote install
threadnote install --package-manager pipx
threadnote install --package-manager pipSymptom: ~/.openviking/logs/server.log shows SSLCertVerificationError, self-signed certificate in certificate chain, or Failed to download local embedding model while OpenViking fetches the embedding model from Hugging Face.
threadnote repair --package-manager uv
threadnote doctor --dry-runThreadnote installs pip-system-certs into the OpenViking environment so Python requests can use OS-trusted certificates. If an older release tries to reinstall all of OpenViking and fails while fetching packages such as openai, install the certificate bridge directly into the existing environment:
uv pip install --native-tls --python "$(dirname "$(realpath "$(which openviking-server)")")/python" pip-system-certs
threadnote startSymptom: the server log says llama-cpp-python is missing. The default OpenViking config uses the local embedding backend.
threadnote installThe installer repairs this by installing openviking[local-embed].
Symptom: doctor reports WARN openviking health: connect ECONNREFUSED 127.0.0.1:1933 — the local server is not running.
threadnote start
threadnote doctor --dry-runCheck whether the server is up directly:
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.
Symptom: another process already owns port 1933. Projects serving localhost:80, localhost:443, or custom /etc/hosts hostnames do not conflict — those are different host and port bindings.
Pick a different port and keep it consistent across start and the agent MCP config:
THREADNOTE_PORT=1934 threadnote start
THREADNOTE_PORT=1934 threadnote mcp-install codex --applySymptom: seed skips one or more files. Skipped files usually matched the secret detector after redaction.
Inspect the file manually and either remove the risky content or leave it out of the manifest. See Safety and Security for the redaction and scanning rules.
Symptom: native skill ingestion fails and the server log shows an OpenAI quota, rate-limit, or authentication error. Native mode generates skill overviews with the configured VLM provider.
Run seed-skills without --native. The default mode stores SKILL.md files as searchable resources and does not require native overview generation.
After changing ~/.openviking/ov.conf, restart the server:
threadnote stop
threadnote startSymptom: the server is healthy at /health but returns 404 at /mcp. OpenViking 0.3.12 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.
Symptom: a branch or worktree was deleted and the launcher config still points at scripts inside it.
Memories live in ~/.openviking/data, so deleting a branch or worktree does not delete stored memories. 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.
Symptom: mcp-install prints commands instead of applying them. This is expected — it dry-runs by default.
Run with --apply after reviewing the command:
threadnote mcp-install codex --apply
threadnote mcp-install cursor --apply
threadnote mcp-install copilot --applymcp-install cursor updates the global ~/.cursor/mcp.json; restart Cursor or open a fresh agent session afterward. mcp-install copilot updates the VS Code user-profile mcp.json; restart VS Code or run MCP: List Servers from the Command Palette. If VS Code uses a custom profile path, set THREADNOTE_COPILOT_MCP_CONFIG to that mcp.json path before running the command.
Symptom: Cursor shows an error like expected string, received undefined for the Threadnote search tool — 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 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.
Symptom: you want to remove Threadnote but keep stored memories.
threadnote uninstall --dry-run
threadnote uninstallBy default, uninstall removes Threadnote-managed shims, MCP config, launchd config, and managed user instruction blocks while preserving THREADNOTE_HOME. To delete local OpenViking data too, pass --erase-memories.
See also: Installation, Configuration, CLI Reference.
GitHub · npm · walkthrough deck · OpenViking · AGPL-3.0-or-later
Start here
Concepts
Workflows
Reference