For developers · open source
tuskd is a local memory daemon for AI agents: a human-readable Markdown vault, hybrid search, MCP-native tools, per-agent keys and grants — and an intelligence loop that turns raw experience into shared, validated, versioned knowledge.
$ curl -fsSL https://get.opentusk.ai | sh
$ tuskd init
$ tuskd start -d
$ tuskd agent setup claude-code
01 · Why OpenTusk
Every session starts cold. Hard-won fixes, user preferences, procedures that finally worked — locked away in transcripts nobody reads again. Run several agents on the same project and it's worse: none of them knows what the others learned.
tuskd fixes this at the machine level. One local daemon gives every agent on the box the same durable, searchable, permissioned memory — and a loop that turns what they experience into knowledge the whole swarm can trust.
YOURS
One file per memory record. Grep it, diff it, put it in git. The search index is derived and rebuildable — the files are the truth.
PRIVATE
Binds to localhost only and makes no outbound calls. Nothing leaves your machine unless you export it.
SHARED
Per-agent identities with explicit read / write / promote grants per scope. Agents share project knowledge without stepping on each other.
TRUSTED
Shared scopes sit behind a gate: dedup, contradiction probe, per-scope policy, review queue. No agent silently overwrites what the team knows.
COMPOUNDING
Success and failure telemetry feeds search ranking; procedures that keep working graduate into agent-loadable SKILL.md files.
SIMPLE
No Docker, no database server, no cloud account. Works with Claude Code, Claude Desktop, Cursor, Codex, VS Code — any MCP client.
Want the full picture — architecture, memory model, the gate? Read the docs →
02 · Quickstart
The fast path is four commands: install, make a vault, start the daemon, connect your client. Explicit identities and grants, the review loop, and the dashboard are covered in the docs.
One command — verifies the SHA-256 checksum, installs to ~/.local/bin, never asks for sudo. Alternatives (pinning, manual verification, source) are in the docs.
curl -fsSL https://get.opentusk.ai | sh
A vault is a directory of Markdown files — one file per memory record. The files are the source of truth; everything else is derived and rebuildable.
mkdir team-vault && cd team-vault
tuskd init
Exactly one tuskd process owns the index and file-watcher. It serves MCP over HTTP on 127.0.0.1:7477 and over a Unix socket. -d detaches it (log at .tusk/daemon.log); tuskd stop shuts it down gracefully, tuskd restart -d cycles it after an upgrade.
tuskd start -d
curl -s http://127.0.0.1:7477/status
One command writes your client's MCP config, creates the agent identity if needed, and verifies the handshake. Works for Claude Code, Claude Desktop, Cursor, Codex, and VS Code — see MCP clients for details and generic clients.
tuskd agent setup claude-code
Agents write with memory_write and recall with memory_search. The CLI works alongside the daemon — commands route through it, never a second writer.
tuskd status
tuskd search "env parity" --scope project:demo
03 · The essentials
PLATFORMS
macOS (Apple Silicon and Intel) and static Linux builds (x86_64, arm64), published on GitHub Releases; Windows later. Installs verify SHA-256, never ask for sudo. Install options →
UPGRADES
Re-run the installer, cycle the daemon: curl -fsSL https://get.opentusk.ai | sh && tuskd restart -d. Releases are immutable — you can always pin a version.
SECURITY
Every tool call is authenticated and passes one ACL choke-point. Agent keys live in the vault (0600) and are excluded from exports. The grant model →
04 · FAQ
SQLite gets one writer; so does the vault. tuskd enforces this with an advisory flock on .tusk/lock that dies with the process — stale locks can't wedge the vault. Everything else (stdio sessions, CLI commands, the dashboard) routes through the owner over its Unix socket, so you get concurrency without corruption.
In the vault directory you initialized: one Markdown file per record under memory/, skills under skills/, and derived state under .tusk/. Nothing leaves your machine — tuskd binds to localhost only and makes no outbound network calls. Back up the vault by copying the directory, or use tuskd export.
v0 is deliberately single-machine. Move knowledge between machines with tuskd export archive.tar.gz and tuskd import archive.tar.gz. Don't put a live vault on a network filesystem — advisory locks and file-watchers are unreliable there.
Releases aren't codesigned yet. Installs via curl … | sh aren't quarantined, so this only appears if you downloaded a tarball with a browser — clear it with xattr -d com.apple.quarantine ~/.local/bin/tuskd. Signing and notarization are on the release roadmap.
More answers — lost tokens, stale indexes, backups — in the docs FAQ.