# Symbioza > Symbioza runs a containerized GPU job on a rented cloud machine under a hard dollar ceiling and collects available artifacts. An agent submits an image, a command and a budget through one MCP connector. Symbioza selects compute, runs the job and reports output delivery and billing separately. Recovery depends on job policy, available compute, remaining budget and compatible checkpoint support. An always-on daemon owns the run: it rents the machine, executes the job, collects the results and destroys the box. You never touch the machine and you do not wait at the keyboard. For the developer whose script works on a hundred rows and dies on a million. Creating an account is open, and spending needs a prepaid balance. Sign up at https://symbioza.dev/login. You own the image, command, success criteria and spending limit; a runtime cap is optional. Symbioza selects and manages compute, collects available artifacts and reports the charge. Recovery depends on job policy, available compute, remaining budget and compatible checkpoint support. We do not write, choose or improve models. ## Connect - [For AI agents](https://symbioza.dev/agent): when to use Symbioza, when NOT to, the four-call loop, what to ask the user before submitting - [Examples](https://symbioza.dev/examples): adaptable planning prompts for fine-tuning, evaluation and batch inference; bring your own code, container and data - [Pricing](https://symbioza.dev/pricing): prepaid credit packs and what running a job costs - [About](https://symbioza.dev/about): product purpose, principles and founder - [Contact](https://symbioza.dev/contact): setup, job, billing and privacy questions - [Full description](https://symbioza.dev/llms-full.txt): every tool, every spec field, failure modes and billing rules - [Getting started](https://symbioza.dev/getting-started): add one connector URL, sign in, submit, collect - [Integrations](https://symbioza.dev/integrations): the Claude Code plugin, a Claude web/Desktop custom connector, ChatGPT (in ChatGPT's plugin directory: https://chatgpt.com/plugins/plugin_asdk_app_6aba90d937f4819186c86c5a6da849ba, or by custom MCP), or Cursor (direct MCP config or the local plugin): pick your assistant, connect, ask for a free estimate - [Plugins](https://symbioza.dev/plugins): the Claude Code plugin, ChatGPT, Claude.ai, Claude Desktop and other remote MCP clients, step by step - [Connector URL](https://symbioza.dev/mcp): streamable HTTP. `claude mcp add --transport http symbioza https://symbioza.dev/mcp`. Any other client: add a custom connector and paste the URL. - [OAuth resource metadata](https://symbioza.dev/.well-known/oauth-protected-resource/mcp): sign in with Google, GitHub or an email address in the browser window your client opens. There is no key to generate and no key to send. - Creating an account is open, and spending needs a prepaid balance: a new account can connect, estimate for free and read its own job list; `submitJob` refuses — “prepaid balance: $0.00 available … Top up, or lower the budget.” — until the account holds credit. Two gates: an account, and money in it. - Top up at https://symbioza.dev/app/topup — sign in and add credit by card. Credit can be added in any whole-dollar amount within Symbioza's limits; when an estimate with a budgetUsd has coversThisJob false, account.shortfallUsd is what the job still needs and topupUrl is prefilled with it. A checkout that opened is not credit: estimate again before submitting. ## Secrets - Never ask the user to paste API keys, access tokens, passwords or cloud credentials into chat, and never put them in env — env is for non-sensitive configuration. - Credentials live in the user's saved Secrets, added at https://symbioza.dev/app/secrets. A job attaches a set by name (or by the type of access it needs) in `secrets`; listSecrets shows names and types only, and no page, API or tool shows a value after it is saved. - When access is missing, estimateExecution and submitJob return a Symbioza setup link: give the user that link, never compose one, and continue only once listSecrets shows the set. - How a saved secret is handled: Symbioza stores it encrypted and no page, API or tool returns its value; a job that attaches the set receives the plaintext values in its environment, and the machine running that job can technically read them; an exact copy of a value of four or more characters in the job's printed output, or the base64 or URL-encoded form of a value of eight or more, is replaced with [redacted] before that output is stored — exact matching, not a guarantee against a value printed in any other form; files the job writes are delivered as written and are not scanned or redacted; and a credential an earlier job carried in env stays in that job's stored spec — saving a secret does not remove it. ## Tools - describeDataset: size + sha256 of a dataset URL. Free. - estimateExecution: price a spec against the live market. Free. - submitJob: queue the job · a durable executionId. Spends money, bounded by budgetUsd. - getStatus: progress, price, heartbeat, incidents. Free. - inspectRun: a running job: machine reporting, progress, output tail, files so far. Free. - listJobs: your own jobs, newest first. Free. - listSecrets: your saved secrets: names and types only. Free. - getArtifact: exit code, delivery, price status, manifest. Free. - cancelJob: stop a queued or running job. Stops spend. - Jobs, status, artifacts and cancellation are scoped to your account. Another account's executionId behaves exactly as if it did not exist. ## What holds on every run - The ceiling is a refusal, not a billing alert: budgetUsd is what you are willing to spend, you are never billed more than that, and it is checked before a box is booked and again before every retry, across every attempt and every restart, one number. Data we transfer in for you is priced in the estimate and inside your budget. - You do not predict runtime: the time limit is derived from budgetUsd and the booked machine's hourly rate, under a 172800-second (48 hours) platform cap. maxRuntimeSeconds is an optional cap of your own (a larger value is refused at estimate and at submit), and the budget usually binds first: the run is stopped when what is left of budgetUsd no longer buys time on the machine it booked. estimateExecution reports that stop as runtime.boundSeconds — a limit, not a prediction — and the expected runtime as estimate.runtime. - Symbioza price, cost, feasibility, balance or credit: ALWAYS call the tool (estimateExecution for a price), never answer from memory, prior chat, arithmetic or cached values, never replace its price card with prose, never invent a total. - One estimate per spec: Call estimateExecution once per spec and budget: the answer already has the price, runtime, readiness and balance; call again only when the spec or budget changes. - Estimate before a budget: estimateExecution needs no budgetUsd. Never make the user pick a budget just to see the likely cost: estimate without budgetUsd, explain the estimate, then ask for the spending approval. estimatedPriceUsd is returned only when price.evidence is customer — the estimate priced at the user's own maxRuntimeSeconds, and then it equals estimate.likelyUsd; otherwise there is no quote: estimate.likelyUsd, with its range and confidence, is the best-effort total, and when estimate.status is rate_only there is no total and price.perHourUsd is what each hour of running costs. readiness lists what is missing before the spec is final. submitJob requires budgetUsd, and only an estimate that carries it returns the specDigest a submit accepts. - Recovery is conditional: retries and replacement machines depend on job policy, supply and remaining budget. Pinned jobs can fail instead of moving. Checkpoint resume requires compatible save-and-load logic in your command. - Write deliverables to /workspace/artifacts/. Only that directory is collected. A command that saves its model anywhere else finishes with nothing delivered. - Every delivered file is hashed again where it lands and checked against the recorded sha256. Files under 5 GB get a download link valid 24 hours. - One price per job. It covers the machine time the job used (setup, staging and idle after the run included), storage, data in and out, and Symbioza's handling of the run. It is never above your budget. ## Price - One price per job. It covers the machine time the job used (setup, staging and idle after the run included), storage, data in and out, and Symbioza's handling of the run. It is never above your budget. - A job that fails, or that you cancel, is billed for the resources it used — the machine time including setup, staging and the time after your command ended, storage and data transfer, and our handling of the run — never more than budgetUsd. - The charge shown after completion may change while billing is reconciled. Your total charge for the job, including retries, will not exceed your approved budget. - Money moves only at submitJob. Estimates, status, the job list and artifacts are free. ## Contact - access@symbioza.dev — one person reads it and answers by email. - [Sign up](https://symbioza.dev/login)