SNA

Install

Add SNA to your app + runtime CLI prereqs.

SNA ships as three published packages plus a testing helper.

PackageWhat it does
@sna-sdk/coreHTTP/WS server, session manager, runtime adapters, canonical history
@sna-sdk/clientFramework-agnostic TypeScript client (HTTP + WS)
@sna-sdk/reactReact bindings (hooks, drop-in chat UI)
@sna-sdk/testingMock 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.2

From the monorepo

The repo uses pnpm workspaces. Clone, install, build:

git clone https://github.com/neuradex/sna.git
cd sna
pnpm install
pnpm -r build

pnpm -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 --version

If 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.

On this page