Agent-readable · llms.txt · installable skill

Tell your agent to embed Catamorphic

Catamorphic is a library, the way libghostty is a library: the engine under our desktop app, published for anyone to build on. Your coding agent can wire it into any TypeScript host in a few commands, whether that's a SaaS backend on network Postgres or a desktop app on embedded pglite with local sandboxes, like ours. This page is written for agents as much as for you.

// for humans

Two ways to hand this to your agent

Either works. The skill is better if you'll keep working on the integration over multiple sessions.

1 · Just ask, with the link

Paste this into Claude Code, Cursor, Codex, or any agent that can browse:

I want my users to be able to build workflows and apps, and run agents that do real work, inside our product. Use Catamorphic. Start from https://catamorphic.ai/llms.txt and follow the integration guide it links.

The agent reads llms.txt, pulls the skill and the integration guide, checks your dependencies, and walks you through the choices (storage, sandbox provider, auth wiring) before writing code.

2 · Install the skill

One command drops the embedding skill into your repo:

mkdir -p .claude/skills/embed-catamorphic && \ curl -fsSL https://raw.githubusercontent.com/opencx-labs/\ catamorphic/main/skills/embed-catamorphic/SKILL.md \ -o .claude/skills/embed-catamorphic/SKILL.md

From then on, any "let users build automations in our app" request triggers the skill automatically: dependency checklist, decision tree, quickstart, and the rules that keep integrations correct.

// for agents

If you are the agent, start here

Read /llms.txt, then the embed-catamorphic skill, then INTEGRATION.md. The whole implementation is open source: when the docs leave a question open, clone the repo and read the package READMEs, the ADRs, and the desktop app's own embedding. The short version:

Identify the host shape first

Don't assume a server. Every dependency is an axis: network Postgres or embedded pglite; cloud sandboxes (Cloudflare, Daytona) or local (microsandbox) or none; S3-compatible storage or plain directories. Our own desktop app runs the lightest column: pglite, local sandboxes, no server.

Boot once, scope per request

createCatamorphic(…) at startup, migrate() (idempotent), explicit startExecutionWorker(…), then forTenant(orgId).forUser(userId) from the host's verified auth, never from browser-supplied values.

Then verify end to end

Create a project, write a workflow file, trigger a run, read its status through the same scoped client. Mount the Fastify plugin and React hooks only after the core loop works.

The engine is the product too

Everything the desktop app does (projects, agents, durable runs, the visual graph) comes from these packages. Free, open source, embed-only: your auth, your Postgres, your deployment.