Workflow execution engineOpen source · MIT

Your agent designs it
Cori runs it

Describe the work once in chat (Codex, Claude or any other agent harness). Cori saves it as a real program on your machine — typed TypeScript running on Temporal — so it reruns on demand, survives restarts, and makes zero LLM calls at runtime unless you asked for one.

local-first & cloud-ready/no signup & BYOK/no cloud worker/read the docs →
Agent compatibility

Works with the agents you already use.

Cori is a skill, not another harness. Your agent designs the workflow; Cori runs the result.

  • Codex
  • Pi
  • OpenCode
  • Claude Code
  • Gemini CLI
  • Cursor
  • DeepSeek
  • Kimi
  • Cline
  • GitHub Copilot
  • Conductor
  • Mistral AI

+ and many more — any agent that supports skills

Design time · your agent

You already had this conversation.

The agent reads the sheet, checks the spec, translates, drafts the mail. It got there by searching — and on Monday it searches again. Same dead ends, same tokens.

One line ends that. Cori writes down what the agent just did — four typed steps, schemas at both edges, fixtures — as a directory in your repo. The transcript is not what gets saved. The code is.

save_workflow is the only line you had to learn →

claude code · ~/acme/catalog12.9k

> Q3 supplier sheet just landed. Check every product against the GPSR fields, translate the missing FR descriptions, and mail me what's still incomplete.

Read(supplier_q3.xlsx)412 products
Read(gpsr_spec.md)8 required fields
Translate(fr-FR)41 descriptions
gmail — create_draft(ops@)12 flagged

12 products are missing a declaration. Draft is in your outbox.

>save_workflow
Run time · you

Open it. Press run.

One window is the whole product. Your workflows on the left, the one you picked on the right, and the four steps it was compiled with — what kind each one is, and what each one cost. No terminal, no credentials.

The clock is the real one: two seconds, and only step three was declared an LLM step. That rerun bills €0.004 against the €0.41 it took the agent to work it out the first time.

⌘Lrun a workflow, or paste a repo…
workflows
  • translate_product_sheets_fr
  • hello_worldcori-do/workflows
  • weekly_pipeline_digest
translate_product_sheets_fr2.1s
  1. 01fetch_sheetcli 0.2s
  2. 02check_gpsrcode 0.5s
  3. 03translatellm 1.2s
  4. 04mail_reportmcp_tool 0.2s
41 descriptions translated· 12 flagged
€0.004billed · one declared llm step
~/cori/workflows·main·2 ahead of origin
Scale · your organisation

One person, or the whole company.

Nothing changes on the way up. Each team keeps its own folder in the same registry, and every workflow in it runs the same way — compiled steps on Temporal, on the machines you point at them. There are just more folders.

github.com/acme/workflows
sales
  • translate_product_sheets_fr
  • enrich_inbound_leads
  • weekly_pipeline_digest
finance
  • reconcile_invoices
  • close_the_month
  • rebill_fx_spread
support
  • triage_new_tickets
  • draft_first_reply
  • escalate_breached_sla
cori engine2 running
version
A workflow is a directory of files, so git already works on it. Diff a step, revert a bad one, review the change in a pull request.
share
Push the folder. Whoever pulls it gets the same program — not a prompt that may behave differently on their machine.
grab
Paste a reference and the launcher installs someone else’s registry. cori-do/workflows is how hello_world got here.
Where it runs

Nothing we host. Yet.

Every run lands on a machine you already own — the laptop in front of you, the box under your desk, the runner your CI already pays for. There is no worker of ours in the path, and nothing to sign into.

  • this maclocal

    The app bundles the engine. Nothing to stand up, nothing to sign into.

  • ops-box.lanremote

    The box under your desk, taking work off the same queue.

  • ci-runnerremote

    Anything that can reach the queue counts as a worker.

  • cori cloudsoon

    Workers we run, for when you would rather own none of them.

Benchmark · agent vs. cori

The part you can check.

Ten multi-step Google Workspace tasks. Three fresh-agent runs each, graded from Workspace state rather than from the agent’s closing message — then the same ten replayed as Cori workflows.

Execution time

Average wall time per run, across all 30 trials.

Fresh agent, every run100.6s
Cori, every replay13.5s

7.5x faster execution time. Useful for those who want to scale automation

Runtime LLM tokens

Tokens per run on customer meeting prep, the widest of the ten tasks.

Fresh agent, every run254k–671k
Cori, every replay0

No prompt runs at runtime, so there is nothing left to bill.

All 30 replays succeeded: 294 CLI and code activities, every one on its first attempt. Three trials per task, so these are descriptive results and not a universal estimate — the caveats are in the post. Read the benchmark →

How it works

Small enough to hold in your head.

The agent is the design tool. Once the work is right, Cori turns it into typed steps, Temporal keeps their place, and your own machines do the work.

01Capture
Design time

Your agent

ConversationCodex · Claude · Cursor

The work is figured out once.

Cori skillsave_workflow

Turns the proven path into code.

On diskWorkflow folder

manifest.md · steps/*.ts · fixtures/

02Orchestrate
Before + during the run

Cori engine

Commandcori run

Loads one folder or git ref.

PrepareCompile + plan

Types the DAG and assigns each step.

Durable stateTemporal

Retries · timeouts · resume

03Execute
Local or self-hosted

Your machines

IsolationTask queue

Routes work to the right identity.

Trust boundaryBroker

Owns credentials and every side effect.

climcp_toolcodellm
Disk is truth

Workflows, cache, run traces and configuration are plain files. No hosted control plane. No hidden runtime.

TypeScriptTemporalLocal-firstMIT
Get started

One download. Under a minute.

  1. The app bundles the whole engine — no runtime to install, nothing to configure.

  2. 02
    ⌘L cori-do/workflows

    Open the launcher, paste this reference, press Enter, run hello_world. No credentials.

  3. 03
    $ npx skills add cori-do/cori

    Give your agent the Cori skill so it can save your next conversation as a workflow.

Prefer the terminal? The launcher’s footer installs the cori command on your PATH. The skill works beyond Claude Code — Cursor, Gemini CLI and Copilot CLI too. See the install flags →