Run AI agents under control.
SafePod is the platform your agents run on — whichever runtime and model you choose. Each one is isolated in its own pod, holds none of your credentials, and reaches only the data sources you configure.
Your tasks
SafePod
Data sources
- RuntimeClaude Code
- Modelclaude-opus
- Files/workspace
- Memorypersistent
Credentials stay with the platform, never inside a pod.
Why SafePod
Run every agent fully isolated, with the model you bring and the agent runtime you want, then grant, audit and revoke every action it takes.
01 — Isolate
Every agent gets a pod.
An agent starts with nothing. It cannot touch your computer, another agent's files, or anywhere you did not allow — and none of the credentials it works with, the model key or the token that reaches your mail, are inside it.
- It can touch nothing you did not grant. Your computer, your other agents, the open internet — all out of reach until you hand it something, and only the thing you handed it.
- The secrets are not in there. The agent holds no credential of yours — not the model key, not the token to your mail. Every one of them is kept outside the pod, where the agent cannot read it, copy it, or give it away.
- And nothing reaches in, either. Not your other agents, and not anybody else's.
What it cannot touch
Quarterly report
its own files
Inbox triage
its own files
Blog review
its own files
The only way out
Only the services you allowed
02 — Configure
You decide what the agent can reach.
Access is configuration, not trust. A connection belongs to the account; an agent gets only the actions you hand it, and each one is a named entry you can read.
- Per agent, per action. One agent reads the mailbox. The next one cannot.
- Typed, not open API access. "Search" and "create" are separate permissions.
- Changed or withdrawn at any time. The agent loses it on its next call.
- A catalogue that keeps widening. Seven sources built by hand so far, and a far wider set on the way.
| Action | Granted to | Class |
|---|---|---|
| mail.search_threads | Inbox triage | Read |
| mail.create_draft | Inbox triage | Create |
| drive.read_file | Quarterly report | Read |
| chat.send_message | — not granted | — |
| Connection | Account | Agents |
|---|---|---|
| [email protected] | 1 agent | |
| Drive | [email protected] | 2 agents |
| Chat | workspace | no agents |
03 — Audit
Every action on the record.
An agent that runs for days while nobody watches is only acceptable if you can see what it did: the files it read and wrote, the data sources it reached, the sites it went out to, and everything it asked for and was refused.
- Files, sources and sites. What it read and wrote, which connection it used, which host it went out to.
- Across every agent. One feed, not one transcript per tab.
- What it was refused, too. The calls a grant stopped, and the ones that were never possible.
- Bodies stay out. The record keeps a hash of the input, not the input — queryable and exportable, by more than one administrator.
| When | Agent | What it did | Outcome |
|---|---|---|---|
| 08:02 | Inbox triage | Created 2 drafts in Mail | OK |
| 08:01 | Inbox triage | Read 14 threads in Mail | OK |
| 07:46 | Quarterly report | Wrote report.md | OK |
| 07:44 | Quarterly report | Fetched docs.example.com | OK |
| 07:31 | Blog review | Read 6 files | OK |
| 06:58 | Blog review | Read 3 docs in Drive | OK |
| When | Agent | Asked for | Why |
|---|---|---|---|
| 02:14 | Quarterly report | chat.send_message | Not granted |
| 01:52 | Translation | paste.example.com | Not an allowed host |
| 01:08 | Translation | drive.delete_file | Not in catalogue |
| 00:41 | Inbox triage | mail.send | No send path exists |
| 00:12 | Research notes | /etc/shadow | Outside its pod |
The refused calls are the interesting ones — they are recorded too.
04 — Choose
Not tied to one model, or one runtime.
SafePod is the platform, not the agent. Runtimes plug into it and agents move between them, all on the same workspace, with whichever LLM provider you bring.
- Any runtime, one workspace. Switch a stopped agent from one runtime to another without moving a file.
- Bring your own LLM provider. Anthropic, OpenAI, DeepSeek, GLM, Kimi, Qianwen, MiniMax, OpenRouter — or an OpenAI-compatible model endpoint of your own.
- Checked when you save it. SafePod calls the real model to confirm a provider works, rather than trusting the configuration.
| Agent | Runtime | Model |
|---|---|---|
| Quarterly report | Claude Code | claude-opus |
| Inbox triage | Claude Code | claude-sonnet |
| Blog review | Codex | gpt-5 |
| Translation | Codex | deepseek-chat |
| Research notes | Codex | glm-4.6 |
| Support triage | Claude Code | claude-haiku |
| Provider | Key | Checked |
|---|---|---|
| Anthropic | sk-ant-••••4f21 | Verified |
| OpenAI | sk-••••9c03 | Verified |
| DeepSeek | sk-••••1ab7 | Verified |
| GLM | ••••6d40 | Verified |
| Kimi | sk-••••b7e2 | Verified |
| Your own endpoint | ••••0e55 | Checking |
Switch the tabs — the credential is never shown in full, here or to the agent.
Questions worth asking.
Where does my API key actually live?
Not in the agent. The process holds the literal string
safepod-proxy-managed and nothing else — so "print your environment" prints a
placeholder, and an agent persuaded to upload its own configuration uploads a placeholder too.
The real key is attached outside the sandbox, on the way out, by a component the agent cannot
read, reach or reconfigure. Taking the key is not something a clever prompt can do; it needs
the platform itself to be compromised.
Does this make an agent immune to prompt injection?
No, and anyone who tells you otherwise is selling something. Keeping the credential out of the sandbox stops a key being stolen; it does not stop a hijacked agent making a legitimate-looking request with the permissions you granted it. What SafePod bounds is the blast radius. A fully compromised agent still cannot take the key, leave its sandbox, read another agent's files, reach your machine, call an action you did not grant, or call one that does not exist in the catalogue — and whatever it does try is on the record.
What exactly separates one agent from another?
A pod each, not a folder each. Every running agent gets its own kernel-level sandbox (gVisor), its own filesystem and its own network policy, and the workspace disk is attached per agent rather than shared. There is no host to escape onto, no shared home directory, and no sibling process holding a credential worth reading. An agent that deletes everything it can see has deleted its own workspace.
What stops an agent calling something I never intended?
Two things, and the second is the one that matters. First, grants: an action is handed to one
named agent at a time, typed at the level of search versus create
rather than "access to your mailbox". Second, the catalogue: an agent can only invoke actions
SafePod implements, so capabilities outside it are not restricted — they are absent. SafePod
ships no send-mail code path at all, which is why an agent asking to send mail is refused by
the absence of the feature rather than by a policy that could be misconfigured.
It runs for days while I am not watching. How do I know what it did?
One activity record across every agent, not one transcript per tab: what ran, against what, and how it ended — including the calls a grant refused, which are usually the interesting ones. Message bodies are deliberately not kept; connector activity records a hash of the input, so the record proves what happened without becoming a second copy of your data.
Am I locked into one model or runtime?
No, and this is deliberate. Runtimes are interchangeable on SafePod, and a stopped agent can be switched from one to the other while keeping the same workspace and the same files. For models, bring your own LLM provider — Anthropic, OpenAI, DeepSeek, GLM, Kimi, Qianwen, MiniMax, OpenRouter, or an OpenAI-compatible model endpoint of your own. SafePod calls the real model to confirm a provider works before saving it, rather than taking the configuration on trust. The platform is the product; the agent is not.
Can an agent run 24/7?
That is what it is for. An agent lives on SafePod, not in your browser and not on your machine, so closing the tab changes nothing — and neither does shutting your laptop, losing your connection, or going to sleep. A job that takes days takes days, and you come back to the result and to the record of how it got there. An agent that runs while nobody is watching is exactly why the two things above it on this page exist: it can only touch what you granted, and everything it did is written down.