Skip to main content

The Reboot library

Reason this release was yanked:

1.2.0 has a regression. Please upgrade to 1.2.1 or newer.

Project description

Reboot

Reboot

Build AI Chat Apps — and full-stack web apps — with reactive, durable backends.

License PyPI npm Discord Docs


Reboot is a framework for building reactive, stateful, multiplayer AI chat apps — visual apps that run inside ChatGPT, Claude, VS Code, Goose, and more. It also builds full-stack web apps with reactive backends and React frontends.

With Reboot, you just write business logic — no wiring up databases, caches, queues, or retry loops. State survives failures by default. ACID transactions span multiple states. The React frontend stays in sync in real time. And your backend is automatically an MCP server.

AI Chat Apps

Build visual, interactive apps that run inside AI chat interfaces. Define a Session type as an entry point and your methods automatically become tools the AI can call:

from reboot.api import (
    API, Field, Methods, Model, Reader, Tool,
    Transaction, Type, UI, Writer,
)


class CreateCounterResponse(Model):
    counter_id: str = Field(tag=1)


class UserState(Model):
    pass


class CounterState(Model):
    value: int = Field(tag=1, default=0)


class GetResponse(Model):
    value: int = Field(tag=1)


class IncrementRequest(Model):
    """Request with an amount parameter."""
    amount: int | None = Field(tag=1, default=None)


api = API(
    User=Type(
        state=UserState,
        methods=Methods(
            create_counter=Transaction(
                request=None,
                response=CreateCounterResponse,
                description="Create a new Counter.",
            ),
        ),
    ),
    Counter=Type(
        state=CounterState,
        methods=Methods(
            show_clicker=UI(
                request=None,
                path="web/ui/clicker",
                title="Counter Clicker",
                description="Interactive clicker UI.",
            ),
            create=Writer(
                request=None,
                response=None,
                factory=True,
            ),
            get=Reader(
                request=None,
                response=GetResponse,
                description="Get the current counter "
                "value.",
                mcp=Tool(),
            ),
            increment=Writer(
                request=IncrementRequest,
                response=None,
                description="Increment the counter.",
                mcp=Tool(),
            ),
        ),
    ),
)

Dive in!

Full-stack apps

Build reactive backends with React frontends — great as a full-page extension of your AI chat app, or as a standalone web app.

Key features

Automatic MCP server. Session methods are automatically exposed as MCP tools. Other types can opt in with mcp=Tool(). UI methods open React apps in the AI's chat. No glue code.

Durable state by default. States survive process crashes, deployments, and chaos. No external database required.

ACID transactions across states. transaction methods compose atomically across many state instances running on different machines.

Reactive React frontend. Generated hooks keep your UI in sync without manual management of WebSockets, caches, or polling.

Method system. Code is safer to write (and read) with a clear API and methods with enforced constraints: reader (concurrent, read-only), writer (serialized, mutating), transaction (ACID, cross-state), workflow (long-running, durable, cancellable), ui (React app in AI chat). The runtime enforces these guarantees.

API-first, code-generated. Define APIs using Pydantic (Python) or Zod (TypeScript). Reboot generates type-safe client, server, and React stubs.

Documentation

Full documentation at docs.reboot.dev.

Community

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

License

Apache 2.0

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

reboot-1.2.0-py3-none-manylinux_2_34_x86_64.whl (24.3 MB view details)

Uploaded Python 3manylinux: glibc 2.34+ x86-64

reboot-1.2.0-py3-none-manylinux_2_34_aarch64.whl (24.1 MB view details)

Uploaded Python 3manylinux: glibc 2.34+ ARM64

reboot-1.2.0-py3-none-macosx_14_0_arm64.whl (20.4 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

Details for the file reboot-1.2.0-py3-none-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for reboot-1.2.0-py3-none-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 fb27f3b851e25b797d5cb6e9f93e606ac8ba0c3a138d83f126a2ca26bdfbbd57
MD5 0202466f49025a32280fea83f271616a
BLAKE2b-256 74e051021d59e6bc3802b1726aee7503d28d7ea0eb507896f0a4b7cac81fccf2

See more details on using hashes here.

File details

Details for the file reboot-1.2.0-py3-none-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for reboot-1.2.0-py3-none-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 e3d026f55c1b084f50e417c70fe211d33ac1a796f42eefddd3e288ceb8ea2fd1
MD5 2d0ff19538b3f080fdca657605498e86
BLAKE2b-256 62fb32f27dc3d16d5446ca8987cd81961ebc70c4d9d8e8b0cea71257f1a6b4b1

See more details on using hashes here.

File details

Details for the file reboot-1.2.0-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for reboot-1.2.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 45c74d870833b0a092c451c117006623363fc559d1224522859d94993d0f6c1e
MD5 cae121d729c22d0e5c0a102dc639a2f1
BLAKE2b-256 ae01d67f4c2cfa6cd6605f25f50d8d6dd962cda3dbb1a3be5a413b27cecfe5ba

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page