The agent SDK for every language.
Forge gives your agent everything it needs to live on chain: an identity, a wallet, a capability scope, a health lifecycle, a communication channel, and a generation interface — same eight contracts across Rust, TypeScript, Go, Python, Swift, Kotlin, and Vanilla JS.
sign(payload)
→ idle
sign(payload)
→ idle
sign(payload)
→ idle
sign(payload)
→ idle
sign(payload)
→ idle
sign(payload)
→ idle
sign(payload)
→ idle
Seven SDKs
One agent runtime. Seven languages.
The Forge SDK ships in seven languages: Rust (reference), TypeScript, Go, Python, Swift, Kotlin, and Vanilla JS. Same API surface. Same eight ANVIL contracts. Same cryptographic root.
One payload
Give each SDK the same bytes to sign.
We hand every SDK the same payload: "hello sigil". The payload is identical down to the byte. The key is the same private key, loaded from the same DID.
Seven sign sites
Each language signs in its own idiom.
Rust uses traits and Results. TypeScript uses async/await. Go uses error returns. Python uses keyword args. Swift uses structured concurrency. Kotlin uses suspend functions. Vanilla JS uses Promises. Same operation, every idiom.
Same Ed25519 output
The signatures match. Byte for byte.
Every SDK delegates the actual cryptography to a Rust WASM module compiled once and shared across every binding. There is no “re-implementation” of Ed25519 in TypeScript or Go — there is only the one canonical implementation.
Anchored on chain
The chain accepts any of them.
From the chain's perspective, a signature is a signature. It doesn't know which SDK produced it; it can't. The Rust verification path checks bytes, not languages. That's how the platform stays neutral.
One agent. Seven runtimes.
Build once, deploy anywhere. Rust · TypeScript · Go · Python · Swift · Kotlin · Vanilla JS — all signing against the same cryptographic root.