# Recurse

A serverless harness for agents to create custom agents and deploy them as tools, MCPs, or bots.

Source: https://wheredoirunthis.com/products/recurse · JSON: https://wheredoirunthis.com/api/products/recurse · Read on 2026-09-26

## At a glance

- Type: Serverless
- Kind: Hosted
- Isolation: Not disclosed
- Free tier: Yes
- Starting price: Not disclosed
- GPU: No
- Regions: Not disclosed
- Coverage: 6 of 57 assessed capabilities supported · 4 not assessed
- Agent readiness: read 10 of 11 signals, drive 8 of 11 signals

## Links

- Homepage: https://recurse.run/
- Docs: https://recurse.run/docs
- Pricing: https://recurse.run/pricing
- Repository: https://github.com/synnada-ai/recurse-sdk

## Pricing

- Model: Prepaid account credit, pay per request: LLM tokens at provider rates (no markup) + serverless execution per minute. No subscription or idle charges. New accounts get $5 credit, no card required. Top-ups $5–$500.
- Unit: per 1M input/output tokens (model calls) + per minute (serverless execution)
- Free tier: Yes

| Tier | Price | Includes | Notes |
| --- | --- | --- | --- |
| Pay per request | Execution $0.013/min; GPT-5.6 Luna $0.20/$1.20, Terra $2/$12, Sol $4/$20; GPT-6 Astra $10/$50, Luna $0.10/$0.50, Sol $2/$10 per 1M input/output tokens | $5 starter credit for new accounts. Non-preemptible direct runs cost 3× for Function CPU and memory.; $5 one-off starter credit per new account. |  [source](https://recurse.run/pricing) |

- Overages: Pure metering against prepaid credit; when the balance can't fund active work, runs are cancelled with account_balance_exhausted.
- Card required: No
- Source: https://recurse.run/pricing

## Runtime

- **GPU & accelerators**: No [source](https://recurse.run/docs/costs-and-limits)
- **BYOC (Bring your own cloud)**: no — "Runs on Recurse's serverless harness only." [source](https://recurse.run/docs) (confidence: high)
- **Secrets management**: Encrypted account runtime secrets (`recurse secret set`, stdin input, no read-back), bound per run/deployment as env vars (`--secret ENV=NAME`); supplied to tool execution only, not to model calls or packaging; max 32 KiB per value. [source](https://recurse.run/docs/use-secrets)
- **Storage options**: Run workspace (recurse.context().workspace) → downloadable artifacts with size + SHA-256, retained 24 h. Source archive ≤64 MiB, ≤1,024 members. [source](https://recurse.run/docs/run-inspect-and-retrieve-results)
- **Supported workloads**: custom LLM agents that iterate against verifiers (search/optimisation loops), ML model tuning and predictive modelling, design-space search (CAD/brackets, RNA sequence design, 3D object reconstruction), game level generation with solver/simulator checks, agents deployed as MCP tools for coding agents (Codex, Claude Code) [source](https://recurse.run/use-cases)
- **Persistence**: Ephemeral per run: each run or deployed tool call is a fresh serverless run; results and artifacts are retained 24 h, then downloads are denied (metadata stays visible). — "'Artifacts retained for 24 hours'; 'Each tool call starts a new serverless run'; plugins README: 'Repeated invocations do not imply persistent memory across runs.'" [source](https://recurse.run/docs/costs-and-limits) (confidence: high)
- **Data jurisdiction**: unknown — "Operator is Synnada Labs; incorporation, data location and regions are not stated on the public surface." [source](https://recurse.run/about) (confidence: low)
- **Resource limits & quotas**: Per run: 0.125–16 CPU (default 1), 512–16384 MiB (default 1024); up to 24 h per provider attempt (3 min reserved for finalisation), no automatic restart; direct runs preemptible unless --non-preemptible (3× Function CPU/memory price); artifacts 24 h; source archive 64 MiB / 1,024 files; secret ≤32 KiB. Runs stop when account balance is exhausted. [source](https://recurse.run/docs/costs-and-limits)
- **SDK languages**: Python [source](https://pypi.org/project/recurse-sdk/)
- **Network & egress controls**: No [source](https://recurse.run/llms/docs/use-secrets.md)
- **Snapshots & forks**: None documented [source](https://recurse.run/docs/run-inspect-and-retrieve-results)
- **Deployment methods**: cli, sdk, mcp — "`recurse run` / `recurse deploy --as mcp` from the CLI; recurse.build_bundle in the Python API; deployments consumed via `recurse mcp serve`. No web console documented." [source](https://recurse.run/docs/installation-and-access) (confidence: high)
- **Isolation**: Not disclosed — "Not disclosed. Docs mention 'secure execution', a third-party 'provider' with 'Function preemption' and separate 'Sandbox use' charges, suggesting tools run in a provider's serverless functions/sandboxes, but no isolation technology is named." [source](https://recurse.run/docs/costs-and-limits) (confidence: low)

## Capabilities

### AI & agents

| Capability | Status | Evidence |
| --- | --- | --- |
| Agent skills | Supported | "Installable Recurse skill (recurse.run/SKILL.md; plugins for Codex, Claude Code and Cursor in synnada-ai/recurse-plugins); agents declare their own tools in agent.yaml `tools.register`." [source](https://recurse.run/SKILL.md) |
| AI app builder | Not supported | "No prompt-to-app surface." [source](https://recurse.run/) |
| Autonomous QA agent | Not supported | "Not provided." [source](https://recurse.run/docs) |
| Built-in coding agent | Partially supported | "The harness runs a first-party agent loop around your prompt and tools ('Recurse agent: Use the given tools to make decisions and produce the deliverable'; built-ins for note-taking and TODO management via tools.built_in). It is an agent runtime, not a first-party coding agent — the coding agent is BYO (Codex/Claude Code)." [source](https://recurse.run/docs) |
| BYOK for LLMs | Not supported | "'agent.model … Choose a model listed on the pricing page'; model calls are charged to account credit. No option to supply your own provider key." [source](https://recurse.run/docs/agent-yaml-reference) |
| Credential-injection proxy | Not supported | "Secrets are injected as environment variables into tool execution (`os.environ["SIM_TOKEN"]`), i.e. inside the workload — not swapped in on the wire by a proxy." [source](https://recurse.run/docs/use-secrets) |
| LLM gateway | Partially supported | "Model calls are routed and billed through Recurse ('We currently add no markup to model token rates'), but the catalogue on /pricing is OpenAI GPT models only (GPT-5.6 Luna/Terra/Sol, GPT-6 Astra/Luna/Sol) — single provider, not multi-provider." [source](https://recurse.run/pricing) |
| MCP client | Not supported | "Recurse agents' tools are Python functions registered in agent.yaml (`tools.source`, `tools.register`); consuming external MCP servers is not documented." [source](https://recurse.run/docs/agent-yaml-reference) |
| MCP-server hosting | Supported | "`recurse deploy ./my-agent --as mcp` — 'A deployment pins one tested Recurse agent revision and exposes its manifest interface as a tool. Each tool call starts a new serverless run against that revision.'" [source](https://recurse.run/docs/deploy-and-connect-through-mcp) |
| MCP server | Not supported | "No first-party MCP control server for managing Recurse itself. `recurse mcp serve` exposes the customer's deployed agent as an MCP tool (scored as mcp-hosting)." [source](https://recurse.run/docs/deploy-and-connect-through-mcp) |
| Model inference API (first-party) | Not supported | "Model calls are made by the harness on your agent's behalf (OpenAI GPT models at pass-through rates); no first-party inference endpoint you call directly." [source](https://recurse.run/pricing) |
| Preinstalled coding agent | Not assessed |  |

### Networking & delivery

| Capability | Status | Evidence |
| --- | --- | --- |
| Automatic HTTPS | Not supported | "Workloads are run-to-completion agents; deployments are reached through a local stdio bridge (`recurse mcp serve DEPLOYMENT_ID`), not through a per-workload HTTPS URL." [source](https://recurse.run/docs/deploy-and-connect-through-mcp) |
| Custom domains | Not supported | "No custom-domain support documented." [source](https://recurse.run/docs/deploy-and-connect-through-mcp) |
| Direct public IPv6 | Not supported | "Not provided." [source](https://recurse.run/docs) |
| Edge KV store | Not applicable | "Edge-runtime key; category-wrong for a serverless agent runtime." [source](https://recurse.run/docs) |
| Egress controls | Not supported | "No outbound network policy documented; tools call external services with bound secrets (Use secrets page), with no egress allowlist described." [source](https://recurse.run/llms/docs/project-files-and-dependencies.md) |
| Email send / receive | Not supported | "Not documented." [source](https://recurse.run/docs) |
| Public preview URLs | Not supported | "No shareable per-deploy URLs; deployments are identified by a deployment ID used with `recurse mcp serve`." [source](https://recurse.run/docs/deploy-and-connect-through-mcp) |
| Private networking | Not supported | "Not documented." [source](https://recurse.run/docs) |
| Built-in reverse proxy | Not supported | "No ingress/routing to workload services; callers invoke deployments via the MCP bridge." [source](https://recurse.run/docs/deploy-and-connect-through-mcp) |

### Organisation & security

| Capability | Status | Evidence |
| --- | --- | --- |
| Built-in auth | Not supported | "No end-user auth/IAM for workloads; account login is for the CLI/MCP bridge only." [source](https://recurse.run/docs) |
| BYOC | Not supported | "Runs only on Recurse's serverless harness; no BYOC option." [source](https://recurse.run/docs) |
| Deploy into customers' VPCs | Not assessed |  |
| Secrets management | Supported | "`recurse secret set <name>` stores encrypted runtime secrets; bound with `--secret ENV=NAME`; 'The CLI and API do not provide an operation to read a stored value back'; rotation under the same name; supplied to tool execution, not model calls." [source](https://recurse.run/docs/use-secrets) |
| Self-host / OSS core | Not supported | "Only the SDK/CLI (recurse-sdk) and agent plugins (recurse-plugins) are open source (Apache-2.0); the engine/harness is not." [source](https://github.com/synnada-ai) |
| Sharing | Not supported | "No share-by-link; a deployment is used by configuring an MCP host with its ID under your own login." [source](https://recurse.run/docs/deploy-and-connect-through-mcp) |
| SSO / SAML | Not supported | "Sign-in is 'browser sign-in with GitHub or Google'; no SSO/SAML mentioned." [source](https://recurse.run/docs/installation-and-access) |
| Teams | Not supported | "'Recurse account — Owns runs, deployments, runtime secrets, and wallet balance.' No team/organisation accounts documented. Low confidence: absence of disclosure." [source](https://recurse.run/docs/installation-and-access) |
| Workload identity | Not assessed |  |

### Developer access

| Capability | Status | Evidence |
| --- | --- | --- |
| CLI | Supported | "`recurse` CLI (recurse-sdk on PyPI): login, run, deploy, status, secret, billing, mcp serve." [source](https://recurse.run/docs/installation-and-access) |
| E2B-compatible API | Not supported | "No E2B compatibility." [source](https://recurse.run/docs) |
| Filesystem API | Not supported | "`recurse` can download a finished run's artifacts (size + SHA-256 verified); no live file read/write API into a running workload." [source](https://recurse.run/docs/run-inspect-and-retrieve-results) |
| Git deploy | Not supported | "Deploys package a local directory (agent.yaml + pyproject.toml + uv.lock) via the CLI; no Git-connected deploy." [source](https://recurse.run/llms/docs/project-files-and-dependencies.md) |
| HTTP data API | Not applicable | "Data-layer key; category-wrong for a serverless agent runtime." [source](https://recurse.run/docs) |
| OpenAPI spec | Not supported | "Only a JSON Schema for agent.yaml is published; no OpenAPI spec (/openapi.json 404)." [source](https://recurse.run/schema/agent.yaml.json) |
| Private container registry | Not supported | "No image registry; packages are built from uv lockfiles." [source](https://recurse.run/docs) |
| Public API | Partially supported | "A Python API (recurse package: manifest validation, build_bundle, recurse.context) is documented in the SDK repo's generated API reference, and the secrets page mentions 'the CLI and API'; the HTTP service API itself is not publicly documented." [source](https://github.com/synnada-ai/recurse-sdk) |
| SDK | Supported | "Official Python SDK `recurse-sdk` (Apache-2.0, Python ≥3.14). Python only." [source](https://pypi.org/project/recurse-sdk/) |
| SSH access | Not supported | "No shell/SSH into runs." [source](https://recurse.run/docs) |

### Compute & storage

| Capability | Status | Evidence |
| --- | --- | --- |
| Cloud-init / ignition config | Not applicable | "No VM boot surface in a serverless function runtime (matches modal)." [source](https://recurse.run/docs) |
| Desktop / computer-use sandbox | Not supported | "Not provided." [source](https://recurse.run/docs) |
| GPU compute | Not supported | "Resource options are --cpu 0.125–16 and --memory-mib 512–16384 only; no GPU option or GPU price on /pricing." [source](https://recurse.run/docs/costs-and-limits) |
| Live-state (memory) snapshots | Not supported | "No memory/process checkpointing." [source](https://recurse.run/docs/run-inspect-and-retrieve-results) |
| Multi-region | Not supported | "No region selection or region list anywhere on the public surface (docs, SKILL.md, pricing). Low confidence: absence of disclosure." [source](https://recurse.run/docs) |
| Object storage | Not supported | "Tools write files under recurse.context().workspace; artifacts are downloaded with the CLI and expire after 24 h. No buckets/blob store provided to workloads." [source](https://recurse.run/docs/run-inspect-and-retrieve-results) |
| Persistent disk | Not supported | "'Artifacts retained for 24 hours — Download evidence you need to keep.' Each run/tool call is a fresh serverless run; no volume or durable disk is documented." [source](https://recurse.run/docs/costs-and-limits) |
| Sandbox templates / custom images | Not supported | "No custom image/Dockerfile; the runtime is Python 3.14 plus uv-locked dependencies." [source](https://recurse.run/llms/docs/project-files-and-dependencies.md) |
| Scale to zero | Supported | "'No subscription or idle charges. Each request covers the model calls and secure execution it uses.' Deployments: 'Each tool call starts a new serverless run'; 'Deployments have no idle charge'." [source](https://recurse.run/pricing) |
| Selectable isolation runtime | Not assessed |  |
| Snapshots / forking | Not supported | "No snapshot, checkpoint or fork of a run is documented; a run 'does not restart automatically' at the 24 h boundary." [source](https://recurse.run/docs/run-inspect-and-retrieve-results) |

### Data

| Capability | Status | Evidence |
| --- | --- | --- |
| Database branching | Not applicable | "Data-layer key; category-wrong for a serverless agent runtime (matches the serverless cohort, e.g. modal)." [source](https://recurse.run/docs) |
| Ephemeral instant DB (no-signup) | Not applicable | "Data-layer key; category-wrong for a serverless agent runtime." [source](https://recurse.run/docs) |
| First-party database | Not supported | "Not provided." [source](https://recurse.run/docs) |
| Vector search | Not applicable | "Data-layer key; category-wrong for a serverless agent runtime." [source](https://recurse.run/docs) |

### Platform & operations

| Capability | Status | Evidence |
| --- | --- | --- |
| Managed CI/CD runners | Not supported | "Not provided." [source](https://recurse.run/docs) |
| Built-in observability | Partially supported | "`recurse status <run-id>` YAML snapshots with state, stable error codes, outputs and artifact metadata; the About page says every tool call is 'traced'. No metrics/log/tracing UI documented publicly." [source](https://recurse.run/docs/run-inspect-and-retrieve-results) |
| Preview environments | Not supported | "Not provided." [source](https://recurse.run/docs) |
| Scheduled tasks | Not supported | "No cron/schedule primitive documented." [source](https://recurse.run/docs) |
| Project template marketplace | Not supported | "Five runnable examples in the SDK repo (tiny-tuner, predictive-modeler, rna-fold-lab, backpack-3d, level-design) — examples, not a template marketplace." [source](https://recurse.run/examples) |
| Durable workflows | Not supported | "Runs last up to 24 h per provider attempt; direct runs are preemptible by default and 'It does not restart automatically'. No durable/resumable execution." [source](https://recurse.run/docs/costs-and-limits) |

## Agent readiness

### Read: 10 of 11 signals present

10/11 signals (8 full, 2 partial)

- Llms txt: pass — "/llms.txt (5.7 KB) links SKILL.md, every docs page, pricing, examples, use cases, blog and the agent.yaml schema."
- Llms full txt: pass — "/llms-full.txt (208 KB) = SKILL.md + all public pages (artifacts/llms-full.txt.POINTER.md)."
- Robots AI policy: partial — "robots.txt: 'User-Agent: * / Allow: / / Allow: /llms.txt / Allow: /SKILL.md' — default-allow with agent files called out, but no AI user agents named."
- JSON LD: fail — "No <script type="application/ld+json"> in the homepage HTML."
- Sitemap: pass — "/sitemap.xml: 26 URLs (docs, pricing, use cases, blog)."
- Meta quality: pass — "Descriptive <title>, meta description, full OpenGraph + Twitter card with 1200×630 image."
- Markdown negotiation: partial — "Accept: text/markdown returns HTML and <page>.md 404s, but every page has a markdown twin at /llms/<page>.md (linked from llms.txt)."
- Content efficiency: pass — "Homepage ~9.1 KB readable text / 74 KB HTML ≈ 12% (server-rendered Next.js)."
- Docs discoverable: pass — "'Docs' is the first item in the primary header nav (plain <a href="/docs">)."
- Pricing machine readable: pass — "/pricing (and /llms/pricing.md) is a per-model token table plus per-minute execution rate."
- Anti bot: pass — "Behind Cloudflare, but curl and firecrawl fetched every public page with no challenge."

### Drive: 8 of 11 signals present

8/11 signals (2 full, 6 partial)

- Public API: partial — "Python API reference in the SDK repo (docs/reference/api.md) and a documented CLI; the underlying HTTP service API is mentioned ('The CLI and API…') but not documented."
- Openapi spec: fail — "/openapi.json 404; only a JSON Schema for agent.yaml (/schema/agent.yaml.json)."
- MCP server: fail — "No first-party MCP server for operating Recurse. `recurse mcp serve` exposes a customer's deployed agent (hosting, not a control server); /.well-known/mcp 404."
- SDK packages: partial — "One official SDK: Python (recurse-sdk on PyPI)."
- Auth docs: partial — "Documented CLI browser login (GitHub/Google) storing a device credential in the OS keychain, plus runtime-secret docs; no API keys or scoped tokens."
- Agent self serve creds: partial — "`recurse login` needs a human browser sign-in; the coding agent can then act. No programmatic key issuance. Deployment access is private beta ('deployment access is currently limited')."
- Webhooks: fail — "No webhooks documented."
- CLI tool: pass — "Official `recurse` CLI (login, run, deploy, status, secret, billing, mcp serve)."
- Error model: partial — "Run failures carry a stable error.type / error.code with a safe message in a versioned YAML snapshot (e.g. engine/infrastructure_failed, account_balance_exhausted, secret_unavailable) — a CLI-level model, not a JSON HTTP error model."
- Rate limit docs: partial — "Resource and duration limits documented (Costs and limits); no request rate limits or headers."
- Agent config: pass — "Several surfaces: /SKILL.md (coding-agent skill), Claude Code/Codex/Cursor plugin manifests (recurse-plugins), an AGENTS.md/CLAUDE.md trigger snippet on /install, llms.txt."

## Coding harnesses

- Claude Code (Anthropic) — "Claude Code supports project skills in `.claude/skills/<name>/SKILL.md` … curl -fsSL https://recurse.run/SKILL.md -o .claude/skills/recurse/SKILL.md; `claude mcp add recurse -- recurse mcp serve <deployment-id>`; Claude Code plugin in synnada-ai/recurse-plugins." [source](https://recurse.run/docs/installation-and-access)
- Codex CLI (OpenAI) — "For Codex, set `startup_timeout_sec = 180` and `tool_timeout_sec = 87000`; `codex mcp add recurse -- recurse mcp serve <deployment-id>`; `codex plugin add recurse@synnada-recurse`." [source](https://recurse.run/docs/deploy-and-connect-through-mcp)
- Cursor (Anysphere) — "One Recurse skill for Cursor, Codex, and Claude Code … Copy `plugins/recurse` into `~/.cursor/plugins/local/recurse`, then restart Cursor." [source](https://github.com/synnada-ai/recurse-plugins)
- Hermes Agent (Nous Research) — "'Give this to your agent' lists Codex, Claude Code, Hermes and OpenClaw with `set up https://recurse.run/SKILL.md`." [source](https://recurse.run/)
- OpenClaw (Peter Steinberger) — "'Give this to your agent' lists Codex, Claude Code, Hermes and OpenClaw with `set up https://recurse.run/SKILL.md`." [source](https://recurse.run/)

## Compliance & regions

- Regions note: No region information on the public surface; execution runs on an unnamed third-party serverless provider.

## Company & presence

- Headquarters: unknown
- Founded: Synnada: © 2022 on synnada.ai; Recurse SDK first on PyPI 2026-08-24 (0.0.0), repo created 2026-09-09
- Team size: unknown
- Privacy policy: https://synnada.ai/privacy
- Terms of service: https://synnada.ai/terms
- GitHub (synnada-ai): https://github.com/synnada-ai
- PyPI (recurse-sdk): https://pypi.org/project/recurse-sdk/
- Discord: https://discord.gg/ZpX34cDcqR
- X: https://x.com/RunRecurse
- LinkedIn: https://www.linkedin.com/company/runrecurse
- Blog (RSS): https://recurse.run/blog/rss.xml
- Docs: https://recurse.run/docs

## Nearby in the atlas

- [Beam](/products/beam.md)
- [Chutes](/products/chutes.md)
- [Deno Deploy](/products/deno.md)
- [Koyeb](/products/koyeb.md)
- [Kyushu](/products/kyushu.md)
- [Modal](/products/modal.md)

## Method

Facts come from the product's own public pages. Each claim carries its evidence: a quote and the page it came from. We count capabilities rather than grade products, and "Not assessed" means we have not checked, never that the product lacks it.
