Skip to main content

Reboot

Reboot

Trust the code your agent writes.

A full-stack framework for the AI era.

License PyPI npm Discord Docs


Modern app development is quickly becoming AI-assisted, or entirely vibe-coded. Can you trust these apps in production? Yes, but only if you build on a framework that handles the hard stuff and forces AI agents to ship clean, modular software.

Reboot solves the hard problems once, at the framework level, so neither you nor your coding agent has to. What Rust's borrow checker did for memory management, and React did for component-based frontends, Reboot does for your backend: backend safety and data encapsulation, enforced by the framework rather than by review.

Try Reboot with Claude Code or Codex

Install the Reboot plugin:

curl -fsSL https://reboot.dev/install.sh | bash

Then describe what you want:

Build me a todo-list app I can use from a browser and from Claude and ChatGPT

The agent proposes a design, scaffolds the project — API, backend, frontend, sign-in, tests — and runs it. See Build with Claude Code or Build with Codex, or build one by hand to see every file.

Why a new framework?

Agents are blazingly fast, junior engineers. You cannot trust them to build your application correctly without a rock-solid foundation to stand on. A harness isn't enough.

  • Correct concurrency and retry safety. Coding agents reliably ship bugs in these two areas. The only way to fix this is to give them constraints that make those bugs impossible by construction: every method declares its kind — reader, writer, transaction, or workflow — and Reboot enforces what each one may do.
  • Lose nothing on reboot. Agents don't expect their code to crash. Until now, the fix was to build on a durable execution engine. Reboot goes further with durable applications: the moment a function returns, its state is saved. Workflows resume where they failed — the steps that already finished are memoized rather than run again — and transactions keep everything atomic. No database, no cache, no queue.
  • Agents are lazy. You asked for a frontend, but what you really wanted was a reactive one. You wanted it to retry on an intermittent network failure, but instead it threw an error and never cleaned up its local React state. With Reboot you get these features, and many more, without ever having to ask.
  • Agents make code hard to review. Even if some harness could get an agent to handle all of the concerns above, would you want to review that diff? Could you be sure it didn't introduce bugs? Reboot's semantics are simple enough, for humans and agents alike, that you can.

What it looks like

Define your API with Pydantic in Python (or Zod in TypeScript). Every method declares its kind, and whether an AI may call it:

from reboot.api import API, Field, Methods, Model, Reader, Tool, Type, Writer


class AccountState(Model):
    balance: int = Field(tag=1, default=0)


class DepositRequest(Model):
    amount: int = Field(tag=1)


class BalanceResponse(Model):
    balance: int = Field(tag=1)


api = API(
    Account=Type(
        state=AccountState,
        methods=Methods(
            deposit=Writer(
                request=DepositRequest,
                response=None,
                description="Add funds to the account.",
                mcp=Tool(),
            ),
            balance=Reader(
                request=None,
                response=BalanceResponse,
                description="The account's current balance.",
                mcp=Tool(),
            ),
        ),
    ),
)

Implement it. self.state is durable: when the method returns, the new state is saved, all of it or none of it.

class AccountServicer(Account.Servicer):

    async def deposit(
        self,
        context: WriterContext,
        request: Account.DepositRequest,
    ) -> None:
        self.state.balance += request.amount

    async def balance(
        self,
        context: ReaderContext,
    ) -> Account.BalanceResponse:
        return Account.BalanceResponse(balance=self.state.balance)

Call it from React through generated, typed hooks. useBalance re-renders whenever the balance changes, whether this user, another user, a workflow, or an AI changed it:

const account = useAccount({ id });
const { response } = account.useBalance();

await account.deposit({ amount: 50 });

The same two methods are tools for Claude, ChatGPT, or any other MCP client, because they were declared with mcp=Tool().

One backend, many frontends

One app to serve every user — human or machine. You and your agents can build any kind of app with Reboot:

  • Humans reach it through a web app, a React Native app (alpha), or an MCP App inside ChatGPT, Claude, or VS Code, where UI methods render React components in the conversation.
  • Agents reach it over MCP: every method marked mcp=Tool() is a tool. An agent can also run inside your app, with durable, replay-safe model and tool calls.
  • Services reach it from your own backend code, a script, or a plain HTTP request.

Signed-in users come built in. Plug in your favorite auth provider — Google, GitHub, Auth0, Ory — and Reboot runs the OAuth server in front of it, so a person signing in auto-constructs their User: the per-user entry point the rest of your app hangs off, and the same User on every frontend. See Users and sign-in.

Status

Python backends are supported today. TypeScript backends and React Native frontends are in alpha: the core of Reboot works in both languages, but MCP Apps, UI methods, the built-in OAuth sign-in flow, and durable agents are Python-only for now. More languages are coming.

Get started today

Reboot is open source. Run a Reboot app on your own infrastructure or on Reboot Cloud.

Community

Contributions are welcome. Open an issue to discuss substantial changes before sending a pull request.

License

Apache 2.0

Metadata

Release files for reboot 1.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for reboot 1.7.0
File Interpreter ABI Platform Actions
reboot-1.7.0-py3-none-manylinux_2_34_x86_64.whl Python 3 none Linux glibc 2.34+ x86-64 Details for reboot-1.7.0-py3-none-manylinux_2_34_x86_64.whl
reboot-1.7.0-py3-none-manylinux_2_34_aarch64.whl Python 3 none Linux glibc 2.34+ ARM64 Details for reboot-1.7.0-py3-none-manylinux_2_34_aarch64.whl
reboot-1.7.0-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details for reboot-1.7.0-py3-none-macosx_14_0_arm64.whl

Total release size: 79.1 MB

Release files / reboot-1.7.0-py3-none-manylinux_2_34_x86_64.whl

Download URL reboot-1.7.0-py3-none-manylinux_2_34_x86_64.whl
Size 27.7 MB
Tags Linux glibc 2.34+ x86-64 Python 3
SHA-256 checksum
How to use checksums
c738156152c2d0f3e1668c54959fa6f4bbc5ad486c4a97a7601472208f6640b3
BLAKE2b-256 checksum
How to use checksums
8813c2510096b232665b54ca7c1e6eb6d99e5ae1ca3fc107ffd8887b4254dd8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.12

Release files / reboot-1.7.0-py3-none-manylinux_2_34_aarch64.whl

Download URL reboot-1.7.0-py3-none-manylinux_2_34_aarch64.whl
Size 27.5 MB
Tags Linux glibc 2.34+ ARM64 Python 3
SHA-256 checksum
How to use checksums
1f7b5ff2fc9eaa7886606789e1013f5a84f200e963068be74bf47a04e8ef15b1
BLAKE2b-256 checksum
How to use checksums
69a9622ab2b5538cc348308d29abd35ab0611de96d5c84b036b40a8fcec79c32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.12

Release files / reboot-1.7.0-py3-none-macosx_14_0_arm64.whl

Download URL reboot-1.7.0-py3-none-macosx_14_0_arm64.whl
Size 23.9 MB
Tags Python 3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
d481c512b5134321fb871c1707d1178d31452edfc28abfce4c8d0c0ca5a2a59e
BLAKE2b-256 checksum
How to use checksums
88c2ff3e6a4e1d7bd0981c3378be2c58a01d4b66cca77bde4c39f80d5a59f7cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.12

Security for reboot 1.7.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.7.0 This release

3 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page