Recurse SDK
Author, package, and deploy Recurse applications.
Installation
Python 3.14 or newer is required. Install Recurse from PyPI:
pip install recurse-sdk
This installs both the recurse command and the Python API. Check the installation:
recurse --help
If you prefer uv, install the CLI as an isolated tool:
uv tool install recurse-sdk
Add the Python API to an application:
uv add recurse-sdk
Running or deploying an application also requires uv on your PATH to build its package.
The distribution ships two things:
- The
recursePython package: manifest validation, standards-based application packaging (recurse.build_bundle), and the runtime context tools use during a run (recurse.context). - The
recursecommand: browser login, encrypted runtime-secret management, direct runs, MCP deployment, artifact retrieval, and billing.
Quickstart
An application is a directory with an agent.yaml manifest, a system prompt, a tool
module, and a uv lockfile. See the runnable examples and
authoring and deployment guide:
- examples/tiny-tuner — tune a classifier against held-out validation F1.
- examples/rna-fold-lab — design RNA sequences against an independent forward-fold oracle.
- examples/backpack-3d — write, render, visually critique, and revise a 3D backpack using Astra and complete Python modeling programs.
recurse login
recurse secret set github-token
recurse secret list
recurse run examples/tiny-tuner --inputs inputs.json --secret GITHUB_TOKEN=github-token
recurse deploy examples/tiny-tuner --as mcp --cpu 1 --memory-mib 1024 \
--secret GITHUB_TOKEN=github-token
codex mcp add recurse -- recurse mcp serve <deployment-id>
claude mcp add recurse -- recurse mcp serve <deployment-id>
For Codex, apply the startup and tool timeout settings shown in the guide after adding the server.
Documentation
- docs/guide.md — installation, authoring, runtime, login, deployment, local MCP access, and billing.
- docs/reference/api.md — generated API reference.
- docs/reference/manifest.md — generated
agent.yamlreference.
Contributing
Run ./check.sh for formatting, lint, types, tests, generated-reference checks, and package builds.
The SDK and examples must reach 100% statement and branch coverage. The RNA and backpack examples'
tests and dependencies live under their own tests directories and use separate locked environments.
Install the same gate before committing:
uv tool install pre-commit
pre-commit install
Publishing
pyproject.toml sets readme = "README.md", so package builds embed this README as the
PyPI description. Editing it on GitHub does not update an existing release:
PyPI retains the metadata from that release's first upload.
To publish a corrected description with the next SDK release:
- Choose an unpublished version, update
project.versioninpyproject.toml, and runuv lock. Update the SDK version reported insrc/_recurse_cli.pyand its matching CLI tests. Also runuv lock --directory examples/rna-fold-lab/testsanduv lock --directory examples/backpack-3d/teststo refresh their local SDK dependency. - Run
./check.shto validate the release and build its wheel and source distribution indist/. - Inspect the wheel's
.dist-info/METADATAand the source distribution'sPKG-INFO. Their description must match the current README, withpip install recurse-sdkfirst anduv tool install recurse-sdkas an optional alternative. - With PyPI publishing access, upload only the two files for that version using
uv publish dist/recurse_sdk-<version>-py3-none-any.whl dist/recurse_sdk-<version>.tar.gz, replacing<version>with the selected version. - Check the new release's description on PyPI and the default project page. In a fresh
Python 3.14 environment outside this checkout, run
pip install recurse-sdk,pip check, andrecurse --help. Confirmpip show recurse-sdkreports the published version.
Version 0.1.0 retains its original description. Publish a new version to refresh the default project page; PyPI does not allow replacing previously uploaded files.
License
Licensed under the Apache License 2.0.
Release files for recurse-sdk 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| recurse_sdk-0.1.7.tar.gz | 38.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| recurse_sdk-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 79.1 kB
Release files / recurse_sdk-0.1.7.tar.gz
| Download URL | recurse_sdk-0.1.7.tar.gz |
|---|---|
| Size | 38.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7fa1307da819af7aedaae4f77198bdfa8b8e6c9b22b769556e362e89117d0081
|
|
BLAKE2b-256 checksum How to use checksums |
7d4ca96f85e283b5054e8fbd5afe88d04efd8d24a157d181a13e3dc46de2372a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.16 {"installer":{"name":"uv","version":"0.9.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / recurse_sdk-0.1.7-py3-none-any.whl
| Download URL | recurse_sdk-0.1.7-py3-none-any.whl |
|---|---|
| Size | 40.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0033e97869346b73fb5b4c31950a849daef20a4131bae9e133709af76942a44d
|
|
BLAKE2b-256 checksum How to use checksums |
9bab52c90c9623c20f1b73e8e120e415cee882a2090e7fbb031e30e86d4cd038
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.16 {"installer":{"name":"uv","version":"0.9.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|