celesto

CelestoAIApache-2.0活跃维护

给 AI Agent 提供安全、可持久化的云端电脑环境,让浏览器操作和电脑操作类 Agent 在隔离沙箱里跑任务,状态不丢。

Secure and persistent computer for AI agents

v0.1.13发布于 2026-11-05 23:40 UTC1,225star +48 / 7 天103fork同步于 2026-11-10 17:52 UTC

怎么上手

由 README 提炼,执行前请确认
curl -fsSL https://celesto.ai/install.sh | bash
pip install celesto && celesto setup && celesto doctor
硬件要求按 README 说明

本地模式需要本机虚拟化环境:macOS 通过 Homebrew 安装 QEMU,Linux 上 setup 可能要求 sudo;Windows 电脑需 Linux + KVM。README 未提及显存或 GPU 要求,Cloud 模式只需 Python 包和 API Key。

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

给 AI Agent 一台独立、可持久化的虚拟机,用来跑代码、开浏览器和桌面应用

给 AI Agent 提供安全、可持久化的云端电脑环境,让浏览器操作和电脑操作类 Agent 在隔离沙箱里跑任务,状态不丢。

核心能力

  • 每个 Agent 独占一台轻量虚拟机,约 500ms 启动
  • 文件与状态跨会话保留,支持快照暂停恢复
  • 同一套 Computer API 可切本地或 Celesto Cloud
  • 提供 CDP 端点与实时查看器,供 Agent 操作 Chromium
  • 支持共享文件夹、网络策略及 Linux/Windows/macOS 多系统

容易踩的坑

本地运行依赖 QEMU 等虚拟化软件,需先执行 celesto setup 并可能输入 sudo 密码;桌面镜像首次启动需下载并校验,之后才走缓存;Cloud 模式必须自行设置 CELESTO_API_KEY,且自定义模板构建脚本以 root 运行、遇错即停、不能上传文件。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.1.13
  1. v0.1.13最新正式版2026-11-05 · 2026-11-05 23:40 UTC

    What's Changed

    Full Changelog: https://github.com/CelestoAI/celesto/compare/v0.1.12...v0.1.13

  2. v0.1.122026-11-03 · 2026-11-03 23:29 UTC
    查看更新说明

    What's Changed

    New Contributors

    Full Changelog: https://github.com/CelestoAI/celesto/compare/v0.1.11...v0.1.12

  3. v0.1.112026-10-30 · 2026-10-30 04:12 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/CelestoAI/celesto/compare/v0.1.10...v0.1.11

  4. kernels-arm64-2026.10.29.0ARM64 Linux 7.3 sandbox kernels2026-10-30 · 2026-10-30 03:50 UTC
    查看更新说明

    ARM64 sandbox kernels upgraded from Linux 6.12.85 to Linux 7.3 to include the fix for CVE-2026-98432.

    Built by Build microvm Kernel run 40998861102 from commit 2bff7367ce2b2ca7c5c9e28220c74bc92c6deecb, using the pinned upstream tarball and shared sandbox profile. The ELF and Image formats come from the same source build. See attached checksums, resolved configuration, provenance and boot receipts.

    Qualification on Apple Silicon QEMU with native HVF acceleration passed:

    • Two boots exercising Docker overlay storage, bridge DNS/HTTP, CPU and memory limits, user/network namespaces, and persistent ext4 storage.
    • Two SDK boots of the SHA-verified published Ubuntu ARM64 rootfs (images-2026.10.25.0), checking Linux 7.3.0, guest-agent startup, DNS/HTTPS and file persistence across stop/start.
    • The same SDK boot/restart checks through a temporary uv tool wheel installation, including standalone ARM64 guest-agent download and checksum verification.
    • 147 focused SDK, image-manifest and release-workflow tests; Ruff lint and formatting checks.

    Libkrun and Firecracker were unavailable on the macOS qualification machine; their ELF artifact was build- and checksum-verified, without a live runtime boot.

    Existing sandboxes retain their original kernel. Recreate affected sandboxes after adopting the updated SDK pins, preserving any needed data first. This kernel-only release does not change rootfs or guest-agent assets or publish a Python package.

  5. kernels-2026.10.28.0AMD64 guest kernels — Linux 7.32026-10-28 · 2026-10-28 05:59 UTC
    查看更新说明

    AMD64 Linux 7.3 guest kernels, qualified from SDK commit 5e9efa5c3290ab8e4e4cf8575cc7f22b800e0e5c. Sandbox uses the shared baseline; GitHub CI adds built-in XFS.

    Four QEMU boots passed Docker overlay storage, bridge DNS/HTTP, cgroups, namespaces and ext4 persistence. CI also passed XFS mount/reflink. The wrong-profile negative control passed. See attached receipts, resolved configs, SHA256SUMS and provenance.

    QEMU image sizes: sandbox 15.0 MiB, GitHub CI 16.0 MiB. Source checksum and maintainer signature verified. ARM SDK kernels, rootfs and guest-agent pins are unchanged. Existing guests require recreation to receive this kernel. Applications adopt these guest kernels independently.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Celesto

    Secure, persistent computers for AI agents

    CodeQL Run Tests License Python 3.11+

    OpenMuse · Quickstart · Python API · Agents and automation · Runtimes · Examples · Docs · Discord


    Celesto gives an AI agent its own computer for running code, browsing the web, and using desktop apps. You can run that computer on your machine during development or in Celesto Cloud for remote and production work.

    Each computer is a lightweight virtual machine, starts in about 500 ms, and can keep files and state between sessions. Because the agent runs in a separate computer instead of a process on your machine, Celesto provides a stronger boundary for untrusted code.

    These docs use one word for each idea. See the glossary for what "computer", "desktop", and "browser session" mean, or browse the documentation index for guides.

    Built with Celesto: OpenMuse

    OpenMuse is our open-source computer coworker, built end to end on Celesto. It browses public websites in its own disposable Linux desktop while you watch, approve clicks and form changes, or take control.

    Explore OpenMuse →

    OpenMuse is a preview. Clone this repository to run it locally.

    Quickstart

    1. Install Celesto

    On Linux or macOS, this command installs the Celesto CLI and Python SDK, prepares the machine, and checks that it is ready:

    curl -fsSL https://celesto.ai/install.sh | bash
    

    Install Celesto with Python 3.11 or newer, prepare the machine, then check the setup:

    pip install celesto
    celesto setup
    celesto doctor
    

    On macOS, setup uses Homebrew to install QEMU. On Linux, setup may ask for sudo.

    2. Create a computer

    Give the computer a name so later commands can find it:

    celesto computer create --name my-computer
    

    celesto sandbox remains an equivalent spelling for every celesto computer subcommand. See older names you will still see.

    3. Run a command

    Everything after -- runs inside the computer:

    celesto computer exec my-computer -- python --version
    

    4. Delete the computer

    Delete it when you no longer need its files or state:

    celesto computer delete my-computer
    

    Use celesto computer stop my-computer instead when you want to keep it for later. Restart it with celesto computer start my-computer.

    Local CLI and Python SDK usage telemetry displays a notice before sending limited installation and feature counts. PostHog may infer approximate location from the request IP address. To turn telemetry off, run celesto config telemetry off or set CELESTO_NO_TELEMETRY=1 in your environment. See the CLI reference and privacy policy.

    Use the Python API

    The installer includes the Python SDK. The with block creates a local computer when the block starts and deletes it when the block ends:

    from celesto import Computer
    
    with Computer() as computer:
        result = computer.run("echo 'Hello from Celesto!'")
        print(result.stdout)
    

    Run in Celesto Cloud

    Cloud computers do not require virtualization software on your machine. First, set your API key:

    export CELESTO_API_KEY="your-api-key"
    

    Then run the same Python code with the cloud provider:

    from celesto import Computer
    
    with Computer(provider="cloud") as computer:
        result = computer.run("echo 'Hello from Celesto Cloud!'")
        print(result.stdout)
    
    ProviderBest forWhat your machine needs
    LocalDevelopment, tests, and private workloads on your machineLocal virtualization setup
    CloudRemote tasks, persistent workspaces, and production workloadsPython package and CELESTO_API_KEY

    Start cloud computers with your packages installed

    A custom template is a built-in template plus your own setup commands. Celesto runs the commands once and saves the result, so every cloud computer you create from the template starts with your packages ready:

    from celesto import Template
    
    template = Template.create(
        name="data-env",
        build_script="apt-get install -y ffmpeg\npip install pandas",
    )
    template.wait(on_log=print)  # prints the build log; returns when the build is ready
    
    with template.create_computer() as computer:
        print(computer.run("ffmpeg -version").stdout)
    

    The build script runs once, as root, and stops at the first failing command. Files can't be uploaded with it, so list packages directly instead of using pip install -r requirements.txt. Check a script first with Template.lint(script), load a template with Template.get("tpl_..."), or pass its ID as CloudComputer(template_id="tpl_..."). See the custom templates guide for limits, errors, and rebuilding.

    Agents and automation

    Celesto commands print readable output by default. Add --json when a script or agent needs stable, machine-readable output. Every JSON response contains ok, command, exit_code, data, and error fields.

    Check the machine before accepting work. --strict makes warnings fail the check:

    celesto doctor --strict --json
    

    Create a named computer and capture the JSON response:

    celesto computer create --name agent-job --json
    

    Run a command without opening an interactive shell:

    celesto computer exec agent-job --json -- python -m pytest
    

    Always clean up the computer by its exact name when the job ends:

    celesto computer delete agent-job --json
    

    Use unique names for concurrent jobs. Prefer exec for automation; reserve shell, ssh, and desktop for interactive work. Commands return a nonzero exit code on failure, and JSON errors include a recovery command when Celesto can provide one.

    Inspect and connect

    Use celesto computer list to see computers, celesto computer logs my-computer to inspect startup output, or celesto computer shell my-computer to open a fast interactive shell.

    Add --follow to stream logs. Use celesto computer ssh my-computer when you need an SSH session. See the CLI reference for every command and shell completion.

    Choose a runtime

    Celesto exposes one default API and focused APIs for browser and desktop work:

    RuntimeUse it when an agent needsPython APICLI
    Minimal computerCommands, code, and filesComputer()celesto computer
    Browser sessionChromium, CDP, screenshots, or a live viewerCelesto.browser()celesto browser
    Computer with a desktopA full desktop and multiple GUI appsCelesto.computer()celesto computer create --desktop
    Windows computerPowerShell or Windows softwareCelesto(os="windows", ...)celesto computer create --os windows --image PATH
    macOS desktopApp or installer tests on Apple Silicon—celesto computer create --os macos

    Use Computer for the common minimal computer path. Use the Celesto factories for focused browser and desktop runtimes. Use Celesto(...) directly when you need low-level options such as the backend, communication channel, operating system, shared folders, or network policy.

    Core capabilities

    CapabilityWhat it provides
    Fast startA ready computer in about 500 ms, without an image pull on each start
    IsolationEach computer is separate from your machine and from other computers
    Local or cloudThe same Computer API across development and production
    Persistent stateFiles and state that survive across sessions
    Shared foldersRead-only or writable access to selected folders on your machine
    SnapshotsPause and restore memory, disk, and active processes
    Network policyDisable outbound access or allow specific IPv4 ranges on Linux with Firecracker
    Multiple operating systemsLinux, Windows 11, and macOS preview support

    Browser

    Use a browser session when an agent only needs Chromium. Celesto exposes a CDP endpoint for automation and, in visible mode, URLs for live view and screen control.

    from celesto import Celesto
    
    with Celesto.browser(headless=False) as browser:
        print(browser.cdp_url)
        print(browser.viewer_url)
    
    • cdp_url: connect Playwright or another CDP client.
    • viewer_url: watch the browser from another browser.
    • display_url: unavailable for raw VNC; use the authenticated browser viewer.

    Use headless=True when the agent only needs CDP. Start a visible browser from the CLI with:

    celesto browser start --live
    

    See examples/browser_sandbox.py for a complete example.

    Computer with a desktop

    Use a computer with a desktop when an agent needs to see and use more than a browser. The default image includes Chromium, a terminal, a file manager, and a text editor.

    from celesto import Celesto
    
    with Celesto.computer() as computer:
        print(computer.display.viewer_url)
        print(computer.browser.cdp_url)
    
        computer.files.write("/workspace/task.txt", "Review this file")
        print(computer.run("ls -la /workspace").stdout)
    

    The API groups screen access under computer.display and Chromium access under computer.browser. If Chromium closes while the desktop stays active, call computer.browser.launch().

    The first start downloads and verifies the Linux desktop image. Later starts reuse the cached image, so Docker is not required.

    celesto computer create --desktop --name assistant
    celesto computer open assistant
    celesto computer delete assistant --desktop
    

    See the desktop guide for Python and TypeScript examples.

    Windows computer

    Use a Windows computer when an agent must run PowerShell or Windows software. Celesto can boot Windows 11 from a baseline image, upload files, set environment variables, and start multiple computers from the same image.

    from celesto import Celesto
    
    with Celesto(
        os="windows",
        image="~/.celesto/images/win11.qcow2",
        ssh_user="celesto",
        ssh_password="celesto",
    ) as computer:
        print(computer.run("Write-Output 'hello from windows'").stdout)
    

    Create an image from a Windows ISO:

    celesto windows build-image \
        --iso ./Win11.iso \
        --virtio-win-iso ./virtio-win.iso \
        --output ~/.celesto/images/win11.qcow2
    

    Windows computers need a Linux machine with KVM. Shared folders, network controls, and snapshots work only on Linux computers. See the Windows guide for image setup and requirements.

    macOS desktop preview

    On an Apple Silicon Mac, Celesto can create a temporary macOS desktop for app and installer tests without changes to your main system.

    Prepare the reusable local image:

    celesto setup --macos
    

    Create and open a desktop:

    celesto computer create --os macos --name test-mac
    celesto computer desktop test-mac
    

    The first setup downloads macOS from Apple, requires about 50 GB, and takes 20–40 minutes. The image stays on the Mac that created it. Celesto supports at most two macOS computers at once. See the macOS desktop guide for limits, shared folders, and cleanup.

    Common workflows

    Share a folder from your machine

    Give a local computer access to an existing project without a copy step:

    celesto computer create --name my-computer --mount ~/Projects/my-app
    celesto computer shell my-computer
    ls /workspace
    

    Shared folders are read-only by default. The computer can read the source files, but writes under /workspace stay inside the computer and do not change the copy on your machine.

    Choose a path inside the computer, or share multiple folders:

    celesto computer create \
        --mount ~/Projects/my-app:/code \
        --mount ~/data:/mnt/data
    

    Add --writable-mounts only when the computer must change the files on your machine:

    celesto computer create \
        --mount ~/Projects/my-app \
        --writable-mounts
    

    The flag applies to every shared folder in that command. Do not combine a writable project folder with a folder that must remain unchanged.

    The same option exists in Python:

    from celesto import Celesto
    
    with Celesto(mounts=["~/Projects/my-app"], writable_mounts=True) as computer:
        computer.run("echo hello > /workspace/from-computer.txt")
    

    Upload one file

    Copy a config, script, or small input into a running computer:

    celesto computer file upload my-computer ./prompt.txt /tmp/prompt.txt
    

    Or upload a file to a temporary computer from Python:

    from celesto import Celesto
    
    with Celesto() as computer:
        computer.upload_file("./prompt.txt", "/tmp/prompt.txt")
    

    The destination must be an absolute path inside the computer. Celesto replaces any file that already exists at that path.

    Restrict network access

    Computers have internet access by default. On Linux with Firecracker, use vsock to keep command and file-transfer access while you disable outbound network access:

    from celesto import Celesto
    
    with Celesto(
        backend="firecracker",
        comm_channel="vsock",
        internet_settings={"mode": "off"},
    ) as computer:
        print(computer.run("echo hello").stdout)
    

    Use mode="restricted" with allowed_cidrs to allow specific IPv4 addresses or ranges. The restricted modes require private network mode and do not support shared folders or exposed ports. Explicit command output and file downloads still work when outbound access is off.

    An allowed_domains list resolves domains during setup and permits the resulting IP addresses. It does not check the hostname on each connection. DNS servers do not receive automatic access. See the network guide for supported combinations.

    Examples

    Start here

    GoalExample
    Run code in a computerquickstart_sandbox.py
    Start a browser sessionbrowser_sandbox.py
    Pass environment variablesenv_injection.py

    Agent framework integrations

    Framework or taskExample
    OpenAI Agentsopenai_agents_tool.py
    LangChainlangchain_tool.py
    PydanticAI shell toolpydanticai_tool.py
    PydanticAI computer across turnspydanticai_reusable_tool.py
    PydanticAI browser automationpydanticai_agent_browser.py
    Computer usecomputer_use_browser.py

    Each example includes any extra package command it requires.

    Security

    Each computer runs in its own virtual machine, which provides a stronger isolation boundary than process-level containers. Isolation still depends on secure configuration of your machine, the hypervisor, images, credentials, shared folders, and networking.

    Celesto verifies a computer's SSH identity before sending credentials. Updated managed Linux images supply their public key through the local boot console; other images require a trusted known-hosts file. Do not expose computer ports to the public internet without authentication and network controls. Treat writable shared folders, forwarded credentials, and services the computer can reach on your machine as explicit trust decisions.

    See secure local access for dashboard tokens, private browser links, SSH setup, and upgrade requirements. See SECURITY.md for the security policy and disclosure process.

    Performance

    The benchmark suite measures cold start, time to interactive, pause and resume, and snapshot create and restore. It uses the public Python SDK with the native backend for your machine: Firecracker on Linux and QEMU on macOS.

    uv run python scripts/benchmarks/bench.py
    

    See the benchmark guide for flags, output, and metric definitions.

    Contributing

    See CONTRIBUTING.md to set up a development environment and submit a change. Coding agents should also read AGENTS.md for repository-specific commands, CLI conventions, release checks, and writing guidelines before editing the project.

    License

    Apache 2.0. See LICENSE for details.


    Built with 🧡 by Celesto AI