sigil

Double-click anywhere. I know everything about Sigil.

or I can help you find anything

Ask about Sigil — or anything in the ecosystem

Enter to askEsc to close

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.

sigil · liverunning
FORGE · ANVIL contracts · 8 of 8 implemented in 7 SDKsidle01IdentityOAS DID binding · Ed25519 signing · GAL-anchored lineage02CapabilityArsenal ACTs · scoped credentials · 11-step proxy03Tool3-tier classification · capability surfaces04Health6-state lifecycle · liveness reporting05Communicationagent-to-agent messaging · OCIP envelope06Collaborationmulti-agent coordination · shared state07TelemetryOpenTelemetry · structured tracing08Generationwork-output records · verifiable provenanceeight contracts · seven languages · one shared crypto module
Payload · bytes to sign
Rust.rs

sign(payload)

→ idle

TypeScript.ts

sign(payload)

→ idle

Go.go

sign(payload)

→ idle

Python.py

sign(payload)

→ idle

Swift.swift

sign(payload)

→ idle

Kotlin.kt

sign(payload)

→ idle

Vanilla JS.js

sign(payload)

→ idle

01 / 05
Seven

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.