Cori

FAQ

Frequently asked questions about Cori.

Is there an LLM in the loop at runtime?

Only if a step is an llm step. Most workflows have zero or one llm step. The rest execute deterministically with no language model involved.

The LLM's role in Cori is at design time — figuring out the workflow structure during the agent conversation. At runtime, it only re-appears if a step genuinely needs to process new content (translation, classification, extraction).

Where do workflows live?

Workflows are folders on disk. You run them by pointing cori run at a folder path or a git ref. There is no registry, no central list, no workflow IDs.

cori run ./my_workflow
cori run github.com/org/workflows/translate@v1.1.12

See Workflows are folders.

Do I need to install Temporal?

TODO: This answer depends on whether the temporal binary is bundled with the Cori CLI installer or must be installed separately. Once confirmed, this answer will be updated.

For now: for local solo use, cori run auto-spawns a Temporal dev server if nothing is serving 127.0.0.1:7233. If you see a Temporal connectivity error, check that the temporal binary is available (which temporal) and install it from temporal.io/cli if not.

For production, you point Cori at an existing Temporal cluster via temporal.host in ~/.cori/config.toml. See Configure Temporal.

Can I write steps in Python?

No. Step files are TypeScript only in v1. There is no Python runtime for steps.

Is there a hosted or cloud version?

No. Cori v1 is self-hosted only. All workers run on machines you control. There is no Cori cloud infrastructure, no hosted worker pool, and no management UI.

Can workflows branch or loop?

Not in v1. The builtin activity kind (map, for_each, branch, parallel, wait) is accepted by the compiler but the v1 runtime does not execute it.

Workaround for simple fan-out: collect all items in a single code or llm step that processes the whole collection, rather than fanning out per item.

Workaround for branching: write sequential steps that each handle both cases — a code step can return an empty result for the inactive branch, and subsequent steps handle empty input gracefully.

See Activity kinds for the deferred callout.

How do I share a workflow?

Push the workflow folder to a git repository and share the ref:

cori run github.com/org/workflows/translate@v1.0.0

Anyone with access to the repository and the Cori CLI can run it. There is no hub or marketplace in v1.

Where are my secrets stored?

Credentials (API keys, tokens) are stored in the OS keychain (Keychain Access on macOS, libsecret on Linux). Only credential metadata (which providers are configured) is stored in ~/.cori/config.toml. Cori never writes raw credentials to disk.

Never put credentials in workflow files — they're meant to be shared and version-controlled.

What is the cori_save_workflow skill?

It's the agent skill installed by npx skills add cori-do/cori. It teaches a coding agent (Claude Code, Cursor, Gemini CLI, Copilot) how to capture an agent conversation as a Cori workflow. It is not a CLI subcommand.

See Capture from an agent conversation.

On this page