Sovereign Identity Wallet

Official registry Productivity

Self-hosted signing wallet: DIDs, agency grants, and task mandates for AI agents.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package @tamtunnel/si-wallet-mcp
Claude Code
claude mcp add sovereign-identity-wallet -- npx -y @tamtunnel/si-wallet-mcp@0.1.3
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "sovereign-identity-wallet": {
            "command": "npx",
            "args": [
                "-y",
                "@tamtunnel/si-wallet-mcp@0.1.3"
            ]
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. si-wallet-mcp
  2. Tools
  3. Quick start
  4. Delegation demo: Owner → Muse → Hermes
  5. Who hosts this?
  6. Security notes

si-wallet-mcp

Sovereign-identity wallet as an MCP server. Gives any MCP-capable agent a DID, owner→agent grants, and task mandates — the identity layer underneath AWAS website authentication.

Protocol: TamTunnel/sovereign-identity — DIDs, agency grants, task mandates, and the AWAS website binding this wallet implements.

Version: 0.1.0 · License: Apache-2.0

Tools

ToolWhat it does
wallet_onboardCreate the owner/agent identity (returns existing if present)
wallet_didGet the DID for a role
issue_grantOwner delegates scopes + USD limit to an agent DID
mint_mandateAgent mints a task mandate for a website audience (returns Authorization: Mandate … value). Pass subjectDid to delegate to a downstream agent with narrowed scope/amount
verify_mandateWebsite-side verification: signatures, expiry, audience, replay, grant binding, scope/amount confinement
verify_chainWebsite-side verification of a multi-hop delegation chain (Owner → … → agent): per-hop signatures, binding, attenuation, replay
pairwise_didFresh pairwise DID per audience (no cross-site correlation)

Guardrails are enforced server-side: mandates over $100 need confirmOverLimit=true (only after the owner explicitly approved), and the verifier rejects non-canonical base64url outright.

Quick start

npm install -g @tamtunnel/si-wallet-mcp   # after publish; or clone and npm install
export SI_WALLET_PASSPHRASE="your passphrase"   # required for signing
si-wallet-mcp                                # stdio mode (default)

State lives in ~/.sov-id (override with SI_WALLET_DIR). Keys are scrypt + AES-256-GCM encrypted at rest, files mode 600.

Local MCP clients (Claude Code, Hermes, OpenClaw, …)

Add to the client's MCP config:

{
  "mcpServers": {
    "si-wallet": {
      "command": "node",
      "args": ["/path/to/si-wallet-mcp/server.mjs"],
      "env": { "SI_WALLET_PASSPHRASE": "your passphrase" }
    }
  }
}
Muse (custom connector)

Muse custom connectors reach remote MCP servers over streamable HTTP — a server on your laptop is not reachable from Meta's cloud. Run:

export SI_WALLET_PASSPHRASE="your passphrase"
export SI_MCP_TOKEN="$(openssl rand -hex 32)"   # required in HTTP mode
si-wallet-mcp --http --port 8787

Expose it on a public HTTPS URL (your VPS, fly.io, Tailscale, …), then add that URL as a custom connector in Muse with Authorization: Bearer <token>. The server binds 127.0.0.1 by default; only set SI_MCP_HOST=0.0.0.0 behind TLS. Full walkthrough: DEPLOY.md.

Docker
docker build -t si-wallet-mcp .
docker run -d --name si-wallet \
  -e SI_MCP_TOKEN="$(openssl rand -hex 32)" \
  -e SI_WALLET_PASSPHRASE="your passphrase" \
  -v si-wallet-data:/data \
  -p 127.0.0.1:8787:8787 \
  si-wallet-mcp

See DEPLOY.md for fly.io, Tailscale, TLS, onboarding, backups, and connecting Meta Muse.

Delegation demo: Owner → Muse → Hermes

examples/delegation-chain/ is a runnable proof that mandates compose across agents and frameworks with no pair-specific connectors: the owner grants Muse broad authority, Muse delegates a narrowed envelope to Hermes, Hermes presents the leaf mandate to a website, and the website verifies the whole attenuated chain. Four attacks (scope escalation, amount escalation, tampering, replay) are attempted and refused.

node examples/delegation-chain/run.mjs

Who hosts this?

Each user hosts their own. That is the point. A wallet holds private keys, so there is no shared hosted instance — that would be custodial and would contradict the "sovereign" in sovereign identity.

  • You, for your own use: run it on hardware you control (your Mac, a VPS you own). One command, keys never leave your machine.
  • Other users: same — they run their own instance and point their agent at it. This mirrors how Hermes/OpenClaw already work (self-hosted).
  • Stateless verification (verify_mandate without the replay ledger) is the only piece that could ever be shared, and even that is safer local.

Whoever can reach the server can ask it to sign. Treat the bearer token like a password and never expose the HTTP port without TLS.

Security notes

  • HTTP mode refuses to start without SI_MCP_TOKEN; every request needs Authorization: Bearer <token> (401 otherwise).
  • The server never logs the passphrase, keys, or tokens.
  • Demo identities created with a test passphrase must be replaced before real use — the real owner onboarding is yours to run.
  • This tooling has not had an independent cryptographic audit.

Frequently asked questions

What is Sovereign Identity Wallet?

Self-hosted signing wallet: DIDs, agency grants, and task mandates for AI agents.

How do I install Sovereign Identity Wallet?

It runs on your machine. In Claude Code: claude mcp add sovereign-identity-wallet -- npx -y @tamtunnel/si-wallet-mcp@0.1.3. For other clients, paste the JSON configuration from this page into their MCP settings.

Does Sovereign Identity Wallet need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is Sovereign Identity Wallet open source?

Its code is public on GitHub, but the repository does not declare a standard license.

Who maintains Sovereign Identity Wallet?

It is published by TamTunnel. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.