Install
Add SNA to your app + runtime CLI prereqs.
SNA ships as three published packages plus a testing helper.
| Package | What it does |
|---|---|
@sna-sdk/core | HTTP/WS server, session manager, runtime adapters, canonical history |
@sna-sdk/client | Framework-agnostic TypeScript client (HTTP + WS) |
@sna-sdk/react | React bindings (hooks, drop-in chat UI) |
@sna-sdk/testing | Mock Anthropic API + isolated Claude Code test env |
For the full package surface, see the SDK reference.
Version stability
SNA is still in the 0.x.x line, so public APIs and runtime behavior may
change between minor releases while the SDK settles. Pin exact package
versions in your app instead of relying on a floating range.
If you find a bug or have a feature request, please open an issue on GitHub.
In a consumer app
pnpm add @sna-sdk/core@0.17.2 @sna-sdk/client@0.17.2
# React app?
pnpm add @sna-sdk/react@0.17.2From the monorepo
The repo uses pnpm workspaces. Clone, install, build:
git clone https://github.com/neuradex/sna.git
cd sna
pnpm install
pnpm -r buildpnpm -r build compiles every package in topological order. After
this, the workspace is ready for pnpm --filter @sna-sdk/core test or
running the standalone server.
Verify your runtime CLIs
SNA expects the agent binaries on PATH. A quick check:
claude --version
codex --version
opencode --versionIf a binary lives somewhere non-standard, register it when starting SNA:
await startSnaServer({
appId: "my-app",
dbPath: "./data/sna.db",
runtimePaths: {
claudeCode: "/opt/homebrew/bin/claude",
codex: "/opt/homebrew/bin/codex",
opencode: "/opt/homebrew/bin/opencode",
},
});The lower-level environment variables are SNA_CLAUDE_COMMAND,
SNA_CODEX_COMMAND, SNA_OPENCODE_COMMAND, SNA_GROK_COMMAND, and
SNA_CURSOR_COMMAND. runtimePaths is preferred for embedded apps because the
path lives in the same startup config as the server.