synsema

Deploy agents thattouch money.Prove what they can't do.

Synsema is a language where permission is syntax. The platform runs your agent under exactly what it declared, seals its secrets, and keeps the audit your security team will ask for.

Deploy your first agent See the API

Free for one service. Bring your own LLM key. The language is open source.

invoice-agent · agent.syn
$syn deploy
9 capabilities declared. Ceiling on the Pro plan:
require net("rpc.arc.network")granted
require secret("ARC_HOT_KEY")granted · sealed
require sign("ARC_HOT_KEY")granted · audited
require spend("USDC")granted · 500 / day
require exec("sh")denied · not on this plan
Audit0 checks · 1 denied
1 static binary, no runtime 5 chains signed natively Deny by default, always MIT, open source Horizen Acceleration Season 2026

What runs here

Any Synsema program. Not only agents with a URL.

Web apps and APIs

Sites, APIs, server-rendered pages. One process serves HTML to people and Markdown to agents.

MCP servers

Expose tools to Claude, Cursor or any client. One route, secrets sealed, input under a ceiling.

Workers

No URL. Watch feeds, queues, chains, inboxes. Always on, under the same ceiling.

Agent swarms

Blackboard, signals, spawn. Many agents in one process, one manifest for all of them.

Money

EVM, Solana, Bitcoin, Algorand. Signing and spending are capabilities, metered and audited.

Installable apps

A PWA with native push, or a desktop binary. Same program, same fence.

Before it runs

You see the ceiling before anything starts.

Every deploy intersects what the code declares with require and what your plan permits. The result is a table, not a policy: this line granted, this line denied, and why. The program can never rise above it, because the runtime enforces the ceiling on every call.

  • The manifest is the code itself, versioned and reviewed like any other line.
  • A denied line is a decision you make, not a surprise you find in production.
OverviewLogsAuditSecretsinvoice-agent · running
Declared in the programScopeOn the Free plan
require net("rpc.arc.network")rpc.arc.networkgranted
require llmgranted
require secret("ARC_HOT_KEY")ARC_HOT_KEYgranted
require sign("ARC_HOT_KEY")ARC_HOT_KEYdenied · above the plan
require spend("USDC")USDCdenied · above the plan
require memory("invoice-agent")invoice-agentgranted

While it runs

Declared versus done, line by line.

Every capability check the runtime performs, granted or denied, is written down with its origin and its reason. When an agent tries to read the cloud metadata address it never declared, the line is there, in red, with the refusal. That is the page a CISO opens first, and the one that closes the deal.

  • Streamed from the container, exportable to the tools your compliance team already uses.
  • Spend and signature ceilings per service, enforced by the runtime, visible here.
OverviewLogsAuditSecretslast 24 h
Checks1,284
Granted1,281
Denied3
14:02:11signARC_HOT_KEYgrantedinvoice #2291 · 412 USDC
14:02:10spendUSDCgranted412 / 500
13:58:40net169.254.169.254deniednever declared
13:58:39llmgrantedreason · 1,930 tokens
13:58:38secretARC_HOT_KEYgrantedsealed · never printed

What it never sees

The LLM cannot leak a key it cannot read.

A secret() is opaque to the program that holds it. It authenticates, signs and pays, but it cannot be printed, logged, serialized or handed to a model. Prompt injection has nothing to steal, and your security review has one less question.

  • Secrets are injected sealed at start. Only a fingerprint is ever shown again.
  • Short-lived, scoped credentials for GitHub, Slack and Google are on the way.
agent.synsynsema serve · --secure
require secret("ARC_HOT_KEY")
require sign("ARC_HOT_KEY")

let key be secret("ARC_HOT_KEY")
print(key)                          -- what the model would love to see
let sig be secp256k1_sign(digest, key)  -- what it is allowed to do
[secret ARC_HOT_KEY: redacted] sign ARC_HOT_KEY → ok · audit written · 0x7f3a…c21e

Built to be delegated

What a company gets when it hands you an agent.

req

Permission is code

The whole permission surface is a block at the top of the file. Reviewed in a pull request, diffed between versions, readable by an auditor in twenty lines.

run

Runs in your cloud, outbound only

A runner is a machine with Docker and one program. It only calls out to the control plane, so putting it in your tenant gives us access to nothing of yours.

sso

Behind your identity

Enterprise services sit behind your SSO from the first deploy, with roles per project and an audit that goes to your SIEM. The confidential tier, in a TEE, is next.

Recipes

Nobody adopts a language from scratch. They adopt something that already works.

From the blog

All posts

Your first agent live in a minute. Your audit ready in the same minute.

One command, a URL, and a record of everything the program was allowed to touch. Start free, bring your own key.

Create an account See pricing