Synapse

Configuration and paths

Find every Synapse-owned path, understand environment overrides, and know how integration and editor writes are protected.

Resolved paths

shell
synapse path
ItemDefault on macOS
Home~
Data directory~/Library/Application Support/synapse
Database~/Library/Application Support/synapse/brain.db
Shared guidance~/Library/Application Support/synapse/SOUL.md
Skill library~/Library/Application Support/synapse/skills/
Mesh roles and teams~/Library/Application Support/synapse/roles/, teams/
Worker logs~/Library/Application Support/synapse/workers/
Database backups~/Library/Application Support/synapse/backups/
Installed CLI~/.local/bin/synapse

Everything above lives under one folder. A project may also hold .synapse.yaml scope files and a .synapse/roles/ directory, both of which travel with the checkout rather than with you.

Environment variables

NameEffectTypical use
SYNAPSE_DATAReplaces the application-data directory.Development, tests, or a deliberately isolated database.
SYNAPSE_HOMEReplaces the home directory used for tool files and the default CLI path.Integration testing without touching real user files.
SYNAPSE_BINReplaces the full CLI installation destination.Install outside ~/.local/bin.
SYNAPSE_PROJECT_DIRProvides the fallback project folder for MCP calls that do not carry one, and is what a launched agent is told to treat as home.A client that launches the server outside the project working directory. Set automatically by synapse launch and relay launch.
SYNAPSE_PAGEChooses which dashboard page opens first: memory, mesh, console, skills, vaults, or settings. Anything else opens Connections.Opening the app straight to the screen you want.
CODEX_HOMEReplaces the Codex home directory used for detection and for reading an existing Codex memory store.A non-default Codex installation, or testing an import without touching real files.
PI_CODING_AGENT_DIRpi's own variable for its agent directory, which Synapse reads for the same reason: detection, the instruction pointer, and the skills folder.A non-default pi installation.
SYNAPSE_PI_PACKAGEReplaces the package a connection to pi installs, and the source detection compares against. Defaults to npm:synapse-pi.Working on the package from a checkout instead of npm.
SYNAPSE_COMMANDThe Synapse executable a launched pi session should talk to.Set automatically by synapse launch pi so a session reaches the binary that started it.
SYNAPSE_SHELL_ACTIVEIdentifies the shell hook currently evaluated in this shell.Set automatically by the zsh, bash, or fish integration so status can report it.
SYNAPSE_SHELL_KEYSRecords which managed variables the hook currently has loaded, so leaving a scope unloads exactly those and restores what was there before.Set automatically by the shell hook. Not intended to be set by hand.
SYNAPSE_SHELL_COMMANDThe executable the installed shell block re-invokes on each directory change.Set automatically by the startup-file block so a moved app is still reachable.
SYNAPSE_DOCUMENTLaunches the desktop app directly into a Markdown, TOML, JSON, or YAML document.Internal editor entrypoint.
shell
SYNAPSE_DATA="$HOME/tmp/synapsedemo" synapse data check
SYNAPSE_BIN="$HOME/bin/synapse" synapse install

Overrides affect only the process that receives them. Keep the desktop app, CLI, and connected MCP server on the same SYNAPSE_DATA value if they should share one store.

Tool integration files

ToolIntegrationInstructionsSettings shortcut
Codex~/.codex/config.toml~/.codex/AGENTS.md~/.codex/config.toml
Claude Code~/.claude.json~/.claude/CLAUDE.md~/.claude/settings.json
pi~/.pi/agent/settings.json~/.pi/agent/APPEND_SYSTEM.md~/.pi/agent/settings.json

Connection detection parses the actual TOML or JSON entry named synapse. It reports connected only when the stored command resolves to the expected executable and the arguments equal ["mcp"]. A deleted development binary therefore appears stale instead of healthy.

pi is the exception, because its connection is a package rather than a server command: detection reads pi's packages list and reports connected when the Synapse package is there. The extension in that package starts the same synapse mcp server and finds the executable itself, so there is no stored path to go stale.

Each instruction file contains a managed pointer to the central SOUL.md. A normal sync preserves other text in place. The optional consolidation action first moves that text into SOUL.md, then leaves the global files pointer-only so shared guidance has one editable source.

Connecting Claude Code also writes two entries into ~/.claude/settings.json: a SessionStart hook running synapse session, and a statusLine running synapse statusline. JSON has no comment syntax, so Synapse cannot mark its own entries the way it marks a block in a Markdown file. It recognizes them by the command they run instead, and carries everything else through untouched — a status line you configured yourself is reported and left alone, never replaced.

EntryCommandWhat it produces
hooks.SessionStartsynapse sessionThe connection line in your terminal, and this project's memory in the session's context before the first turn. See Session start.
statusLinesynapse statuslineOne line under the prompt for the rest of the session: model, folder, memory count, and mesh size.

Both are removed by synapse disconnect claude. Codex exposes neither, so a Codex connection is the MCP entry and the instruction pointer only. pi has no settings entries of this kind either — its notice and status line come from the extension in its package rather than from a hook it has to be configured with.

Safe writes

The built-in document views validate JSON, TOML, and YAML before saving. A write with changed content:

  1. Resolves a dotfile symlink and writes through it rather than replacing the link.
  2. Writes the previous bytes to a sibling file ending in .synapsebackup.
  3. Writes the replacement to a temporary file, syncs it, preserves existing permissions, then renames it atomically.
  4. Syncs the containing directory.

Tool setup snapshots its integration file, instruction file, and shared guidance file. If registration or the instruction update fails, it restores every prior state. The CLI installer applies the same rollback model to its launcher and receipt.

Settings and shell integration

shell
synapse settings show
synapse settings optimize full
synapse settings optimize balanced
synapse settings optimize lean

# Manual alternative to Settings → Enable shell hook.
eval "$(synapse hook zsh)"
synapse allow
synapse deny

The optimization value lives in SQLite, so the app, CLI, and every connected MCP process read the same setting. Balanced is the default. See Memory and recall for exact limits and transformations.

The Settings screen detects the default shell and can enable, repair, or remove its managed startup-file block. Existing files are backed up and replaced atomically. The hook is an explicit per-shell opt-in: it activates only inside a directory with at least one discovered, approved scope. Leaving the scope, revoking approval, or changing the YAML unloads managed values and restores values that existed before activation. See Choose an environment boundary before enabling ambient mode.