Overview
What Puras is and the moving parts you'll touch as a developer.
Puras is a multi-tenant agentic Backend-as-a-Service. You write skills, bundle them as a project, push the bundle, and invoke them as jobs from any client with a project API key.
A skill is just a directory with a skill.yaml. Its entrypoint decides how it runs:
entrypoint: SKILL.md(any.mdfile) — the file is loaded as the system prompt and an LLM tool-use loop runs with the tools you declare. Agentic.entrypoint: main.py:run— the worker imports the module and calls the function in an isolated subprocess. Deterministic pipeline, no LLM in the loop.
Same submission API, same billing, same observability. The only difference is what runs inside the worker.
When to reach for Puras
- You want an agent to run server-side (long-running, retryable, observable) rather than in the user's browser.
- You want a deterministic Python pipeline that can call models, save files to project storage, and bill against project credit — without writing infra.
- You're building from inside Claude Code or Cursor and want MCP tools to deploy and observe live.
Moving parts
| Piece | What it does |
|---|---|
| API (FastAPI on Fly) | Projects, API keys, deployments, jobs, secrets, drive, billing. |
| Worker (Python on Fly) | Claims queued jobs, runs the agent tool-use loop or the deterministic Python subprocess, writes results. |
MCP server (purasbackend-mcp) | Local stdio server. Claude Code calls it to push deployments, submit jobs, tail events. |
| Frontend (Next.js) | Dashboard for projects, deployments, jobs, usage, API keys. |
| Supabase | Postgres + Storage (skill bundles, drive). |
The project-as-unit deployment model
A deployment is a single zip of your whole project, not a per-skill push. The bundle contains a skills/ directory; each immediate child folder with a skill.yaml is auto-discovered as a skill. There is no root manifest file — adding a skill = creating a directory. Activating a new deployment is a rolling switch — in-flight jobs keep running on their original version. See concepts for the full model.
Money
Pricing unit is MICROS (1 USD = 1,000,000 micros). Upstream cost (LLM tokens and media generation) is multiplied by PURAS_MARGIN_PCT (default 20%). Jobs only claim if projects.credit_balance_micros > 0. See concepts for the marketplace billing model.
Where to go next
- quickstart — wire up your first job in five minutes.
- example-project — a complete starter (skill.yaml + agentic skill + deterministic skill + app snippet) you can copy.
- concepts — projects, deployments, skills, jobs, billing, drive, secrets.
- mcp-tools — every tool this MCP server exposes.
- sdk-media —
from puras import mediafor image/video/TTS inside skills. - inputs-and-drive — how apps upload files and how skills read them (drive_path / url / base64).
- agent-attachments — sending images/PDFs to agentic skills, and the
file_readtool.