General
What is SAMVAD?
What is SAMVAD?
Is SAMVAD production-ready?
Is SAMVAD production-ready?
Do I need to register anywhere to use SAMVAD?
Do I need to register anywhere to use SAMVAD?
/.well-known/agent.json, you’re on the network. No accounts, no registry gate, no API keys to establish who you are.A public registry is live at samvad.dev/registry where agents can register and be discovered by specialization, model, and communication mode. Participation in the registry is never required to call or be called by other agents.How is SAMVAD different from just building a REST API?
How is SAMVAD different from just building a REST API?
- Identity is built-in. Every message is signed by the sender’s Ed25519 key, which is declared in their public agent card. There is no shared secret to manage.
- Security is automatic. Replay protection, rate limiting, input validation, trust tiers, and delegation — all enforced by the SDK before your handler runs.
- Discovery is part of the protocol. Any agent can fetch another agent’s card, read its skills, and call them — without you writing any client code for that specific agent.
- Typed, versioned skills. Skills declare Zod/JSON Schema input and output contracts. Callers know what to send; receivers validate it automatically.
What does 'sovereign' mean in the tagline?
What does 'sovereign' mean in the tagline?
What is the agent:// URI scheme?
What is the agent:// URI scheme?
agent://myagent.com is shorthand for https://myagent.com. It makes agent identity explicit in logs, envelopes, and allow-lists. There is no new DNS resolver — it maps directly to HTTPS.Security
What happens if my private key is compromised?
What happens if my private key is compromised?
"active": false in your agent card. Receivers re-fetch the card after cardTTL seconds (default 300), so the revocation propagates globally within 5 minutes — no central revocation server needed.After revoking, generate a new keypair. The SDK stores keys in .samvad/keys/; delete the old key file and restart the agent to generate a fresh one.Can I use SAMVAD over plain HTTP?
Can I use SAMVAD over plain HTTP?
How does replay protection work?
How does replay protection work?
nonce (random string) and a timestamp (ISO 8601 UTC). Receivers:- Reject envelopes older than 5 minutes (timestamp check)
- Track every nonce seen within the 5-minute window and reject duplicates
Is the prompt injection scanner reliable?
Is the prompt injection scanner reliable?
- Use an LLM-based classifier (LLM Guard, Guardrails AI)
- Apply least-privilege to whatever the handler touches
- Wrap peer input in an untrusted-input boundary before it enters an LLM context
Can a trusted-peers allowlist be spoofed?
Can a trusted-peers allowlist be spoofed?
trusted-peers trust tier enforces both the sender’s declared agent:// ID and their Ed25519 signature. A caller claiming to be agent://billing.internal must also produce a valid signature from the key registered via agent.trustPeer(). Claiming an ID without the matching private key fails at L2 (signature verification), before L3 (trust tier) is even checked.What signing algorithm does SAMVAD use?
What signing algorithm does SAMVAD use?
- Speed — signing and verification are fast
- Small keys — 32-byte public keys, 64-byte signatures
- No parameter pitfalls — unlike ECDSA, there’s no nonce-reuse vulnerability
- Wide support — available in every major language and runtime
@method, @path, and content-digest (a SHA-256 hash of the request body per RFC 9530). This is an IETF-standard signature scheme — any language with Ed25519 and SHA-256 can verify SAMVAD signatures.SDK & Development
Does SAMVAD work in the browser?
Does SAMVAD work in the browser?
@samvad-protocol/sdk) requires Node.js 20+ and is not designed for browser use — it spawns a Fastify HTTP server and reads/writes files for key persistence.Browser clients can call SAMVAD agents using fetch() directly (constructing signed envelopes manually) or via a thin browser-compatible client. A browser client library is not in the current SDK but is a viable contribution.Can I use SAMVAD with Python, Go, or other languages?
Can I use SAMVAD with Python, Go, or other languages?
How do I test my agent locally without HTTPS?
How do I test my agent locally without HTTPS?
http://localhost:<port> and point AgentClient.from() at the same localhost URL. The L1 security layer (TLS) is absent, but signing, nonce checking, and all other layers still work.Do I need to build before running tests?
Do I need to build before running tests?
src/ directly via Vitest — no build step required. Just run:Can I run multiple agents in the same process?
Can I run multiple agents in the same process?
Agent instance starts its own Fastify server on its own port with its own keypair. There is no global state.What happens if the receiving agent is down?
What happens if the receiving agent is down?
- Sync mode —
client.call()throws a network error. Implement retry with backoff in your caller. - Async mode —
client.task()throws immediately (the 202 response never arrives). If the webhook delivery fails later,client.taskAndPoll()will time out. - Stream mode —
client.stream()throws when the connection fails.
What is the maximum payload size?
What is the maximum payload size?
- The
maxLengthyou declare on string fields in your skill’s Zod schema - The receiving agent’s HTTP server body size limit (Fastify’s default is 1 MB)
callbackUrl so the HTTP layer isn’t holding a long-running connection.How do I handle async task timeouts in taskAndPoll?
How do I handle async task timeouts in taskAndPoll?
timeoutMs to taskAndPoll():timeoutMs is exceeded, taskAndPoll() throws a SamvadError with code AGENT_UNAVAILABLE. The task may still be running on the server — poll GET /agent/task/:taskId manually if you want to retrieve the result later.Deployment
Do I need a real domain to run a SAMVAD agent?
Do I need a real domain to run a SAMVAD agent?
Can I run SAMVAD behind a reverse proxy (nginx, Caddy)?
Can I run SAMVAD behind a reverse proxy (nginx, Caddy)?
X-Accel-Buffering: no on stream responses, which disables buffering in nginx automatically when using proxy_pass.Where are keys stored? Can I use a secrets manager?
Where are keys stored? Can I use a secrets manager?
.samvad/keys/ relative to the process working directory (gitignored). The path is configurable via keysDir in the Agent config.The SDK reads the key file at startup. To use a secrets manager (AWS Secrets Manager, HashiCorp Vault, etc.), retrieve the key material before starting the agent and write it to the keysDir path, or extend the SDK’s key loading to read from your secrets provider.What ports does SAMVAD use?
What ports does SAMVAD use?
https://myagent.com implicitly uses 443 in production). Internally, the SDK uses Fastify and binds to 0.0.0.0 by default.Licensing & Usage
Can I use SAMVAD in a commercial product?
Can I use SAMVAD in a commercial product?
Do I need to open-source my agent?
Do I need to open-source my agent?
What does the patent grant in Apache 2.0 mean?
What does the patent grant in Apache 2.0 mean?
Can I build a competing SDK or protocol implementation?
Can I build a competing SDK or protocol implementation?
Contributing
How do I report a bug?
How do I report a bug?
How do I propose a protocol change?
How do I propose a protocol change?
protocol-change. Describe the problem, the proposed change, and the backwards-compatibility impact. Allow at least one week for discussion before opening a PR. Changes to the wire format or security model ordering require strong justification.What are the best ways to contribute right now?
What are the best ways to contribute right now?
- Python SDK — the biggest adoption gap
- Injection defense — integration with LLM Guard or Guardrails AI
- Protocol conformance tests — a test suite any SDK can run to prove compliance
- Real-world testing — deploy an agent and report any friction in the protocol or SDK
- Documentation improvements — if something was unclear, a PR fixing it is always welcome