EXACTLY-ONCE · REPLAYABLE · SCOPED

Agents you
can leave on.

The first programming language for provable agents.

Every action happens once. Every decision replays. Every agent stays inside the permissions you gave it.

▸ See it run Install
The compiler decides. Not the runtime, not the prompt.

Agents can act now.Almost no one lets them.

The hard part isn't getting an agent to do something. It's knowing what happens after you let it.

Will it do the same thing twice after a retry? Did it make that decision because you told it to, or because the model guessed? If something goes wrong tomorrow, can you reproduce exactly what happened?

When the answers are unclear, agents stay in demo mode. Or a human sits in the loop.

Smarter models don't solve that.
You need behaviour you can prove.
This is an agent
incident.expr
agent "OnCall" {
grants { notify.send, tasks.create, ai.match }
// deterministic: same result, every time
on message /SEV-?[12]\b/ {
notify "oncall-primary" "{.message}"
}
// AI starts here. the compiler knows it
on message ~"a customer reporting an outage" {
create_task "Incident: {.sentence}"
}
}
deterministic
AI judgment
graded · every line
$ expresso check incident.expr --lines
waiting for the file to scroll into view…
You always know which lines depend on AI.

Three constructs introduce AI — a fuzzy ~"…" match, summarize(…), and typed leaf calls. Every other line is deterministic, and the compiler classifies each one before it runs.

You can't prove a program that's hidden inside a prompt. So expresso™ makes the agent a real program, one the compiler can read, classify, and prove.

How it works

You describe what should happen.
The compiler proves what can.

You describe

What should happen

Plain rules: when someone says X, do Y. Deterministic by default.

The compiler proves

What can happen

Every line is classified before it runs: deterministic, or dependent on AI.

deterministic
AI judgment
deterministic
deterministic
The runtime executes

What does happen

Exactly-once, on a journal that replays bit-for-bit through any crash.

Two worldviews
Everyone else
expresso™
AI leaks everywhere
AI is explicit syntax
The runtime decides
The compiler decides
Retry and hope
Replay and verify
Best effort
Exactly-once, proven
What you can trust

Three guarantees.
Proven, not promised.

01 / EXACTLY-ONCE

Never twice

Retries, crashes, and reconnects never execute an action twice.

02 / REPLAYABLE

The replay is the audit

Re-run any session exactly as it happened. The recording is the log.

03 / SCOPED

Can't go rogue

Agents cannot express actions you never granted. Anything else won't compile.

Don't trust us

Watch it survive a crash.

Send a real incident. Kill the process mid-action. Restart it. The redelivered event becomes a visible no-op, and the replay comes back identical.

incident.expr · live
Idle. Hit “Run the crash test” to fire a SEV-1.
Tasks created
0
one incident, one task
Pages sent
0
on-call, exactly once
Duplicates
0
through the crash
Built to run every agent in Coffee.
See it in Coffee

Watch an agent run the month-end close.

Brookfield & Co built a close agent in Coffee. It joins the client's books, categorizes every transaction, flags what looks off, reconciles the bank feed, and drafts the report, then waits for a partner to sign off. Every step replays, and nothing runs twice.

Brookfield & Co · Month-End Close
LIVE
00:00
Mia
Close agent · powered by expresso™
Ready when you are. Hit “Run the close”.
0
Imported
0
Categorized
0
Flagged
Connected to the client's books
books.connect · Xero
Imported 1,284 transactions
ledger.import · once
Categorized 1,247 automatically
rules.apply · deterministic
Flagged 3 entries that look unusual
AI judgment · ~"needs a human"
Reconciled the bank feed · 0 discrepancies
recon.run · exactly-once
Drafted the management report
AI judgment · summarize(month)
Sent to a partner for sign-off
approvals.request · waits for a human
examples/close.expr · 24 lines · 2 AI judgments Powered by expresso™
For developers

Deploy it in one command.

expresso serve a program and it's a webhook-driven service. Events in, real actions out, on a journal that survives crashes.

Install & deploy
# zero dependencies: engine + CLI npm install https://expresso.meetcoffee.dev/expresso-lang.tgz # a few lines become a live service expresso serve incident.expr \ --journal ./state # → events in, real actions out, once
The skeptic's test
# kill -9 mid-send, then restart bash examples/serve-demo/demo.sh each action delivered EXACTLY ONCE 0 lost · 0 duplicated idempotency-key on every call
Install it. Kill it. Restart it. Nothing happens twice.
Why should AI be the only part of your software you can't prove?
$npm install https://expresso.meetcoffee.dev/expresso-lang.tgz