Quickstart
Install Seamless with one command, start Claude Code or Codex in a repo, and confirm the first briefing lands.
This is the one happy path: install, start a session, and watch it open with a briefing. It is one command and a check - everything between them is automatic. Every fork in the road is a link, not a branch in these steps.
Install
macOSLinux
curl -fsSL https://thereisnospoon.org/install | sh
Windows
The same install, in PowerShell:
irm https://thereisnospoon.org/install.ps1 | iex
Tailor it (optional)
One command does the lot: it fetches the checksum-verified release archive for
your platform (macOS, Linux, and Windows; amd64 and arm64), installs seamlessd
and seam, generates the bearer key, wires the detected clients - Claude Code,
the Claude app chat surface, Codex - with hooks, MCP, and skills, and starts
the daemon as a per-user service on 127.0.0.1:8081 with data in ~/.seamless.
No Go, no CGO toolchain, no database server, no Node; the installer needs
curl and tar. Install & deploy has the override knobs and the
other routes (Homebrew, a clone, go install, prebuilt archives);
The service & where things live has the service
controls, logs, and every path.
Seamless is early in its development cycle, and releases with improvements and
bug fixes land often. Make updating a habit - at least weekly - so you are
always on the latest version: seamlessd update is the one command, on every
OS. See Update & uninstall.
Piping a stranger's script into a shell deserves a read first - it is one file.
On a true first run - no config file anywhere - the bearer key is generated and
written to ~/.config/seamless/seamless.yaml. Nothing to copy, nothing to
paste. No LLM key is required either: without one, recall degrades to plain
full-text search. Add OpenAI or Ollama in the
configuration when you want semantic recall.
seamlessd doctor is the checkpoint: it validates the config, opens the
database, applies migrations, and asserts the tool count. If it is green, the
daemon will start.
Now open your client
The installer already wired the clients it found, so there is no second setup step.
Claude Code
Start Claude Code in any git repo - restart it first if it was already running, so it reloads hooks, MCP, and skills:
cd ~/code/myrepo && claude
The same setup covers code sessions inside the Claude desktop app - they
share ~/.claude. See Claude Code setup.
Codex
Start Codex in any git repo - restart it first if it was already running, so it reloads hooks, MCP, and skills:
cd ~/code/myrepo && codex
Codex asks you to approve the hooks once: open /hooks, review the exact
Seamless commands, and accept them - until then, no briefing appears
(why). See
Codex local setup.
Claude app chat
Restart the Claude app once - it reads its config only at startup. A chat has
no hooks and no working directory, so tell it the repo's absolute path and
have it run session_start with that as cwd. See
Claude app chat setup.
The first session inside a git repo also registers it: the SessionStart hook
resolves your cwd to its git root, derives a project slug from that
directory's name, and records the mapping - so agents inherit project scope
without passing project on every call, and without you creating a project
first. See Projects & scope for the precedence chain
and the seamlessd map-repo override.
Confirm it works
That session's context now opens with an injected briefing:
Seam project: seamless -- 58 memories (4 constraints), 3 recent findings.
Constraints (binding for every session):
- errcheck-check-blank-two-category-rule: errcheck runs with check-blank ...
...
</seam-briefing>
If you see that block, the loop is closed: the hook resolved your cwd to a project, the daemon assembled a briefing within its token budget, and the agent started with your knowledge already in context.
Open the console to watch it happen:
seamlessd console-open # opens pre-authenticated
Next steps
- Run
/seam-onboardin Claude Code or$seam-onboardin Codex once - it shows the Seamless-awareness block it can add to global or project instructions (CLAUDE.mdorAGENTS.md) and edits only with your approval. - Wire a client the installer did not find: Add or remove one client.
- Look up any tool, key, or command in the Reference.