GitHub - futuregene/future-os: One AI agent, everywhere you work — terminal, desktop, mobile, and your chat apps. Rust core.

GitHub

8 min read Original article ↗

FutureOS

One AI agent, everywhere you work.

Terminal, desktop, mobile, and your chat apps — one Rust core, one agent.
Configurable approvals and OS sandboxes. Local-first. Open source.

FutureOS desktop app — new conversation, models, skills, and workspace in one window

Quick Start • Features • Models • Commands • Troubleshooting

⭐ If FutureOS is useful to you, a star helps others find it.

Rust core License: MIT + Apache-2.0 中文


Why FutureOS

  • Choose the execution boundary. Configure file-access approvals and OS sandboxing for agent tools. The desktop defaults to Unrestricted (off); select Manual or Sandboxed before working with untrusted content. See the security model and sandbox guide for defaults and limitations.
  • One backend, every surface. A single gRPC agent drives the terminal UI, desktop app, mobile apps, CLI, and IM bots — same sessions, same memory, same skills, wherever you happen to be.
  • Long runs need engineering, not prompting. The built-in goal control plane gives durable goals, event-sourced state, and verification gates to runs of 24+ hours — start a research task at night, review the results from your phone in the morning.

Features

Category Details
Multi-Interface Terminal UI (TUI), desktop app (GUI), mobile apps (Android & iOS), CLI, IM bots — one agent, everywhere. The desktop backend also runs headless on a server (futureos-headless: no window or WebView, works over SSH), and the phone↔desktop channel is end-to-end encrypted — a Noise handshake with ChaCha20-Poly1305 records, so the relay only carries ciphertext (headless, remote)
Configurable Tool Safety read, write, edit, shell — approval rules and sandbox tiers (off / manual / sandbox); macOS Seatbelt, Linux system Bubblewrap, Windows restricted-token write protection. Availability and guarantees differ by platform (guide)
Model Flexibility Bring your own key: the built-in catalog covers the major providers, and any OpenAI- or Anthropic-compatible endpoint can be added through models.json. Or sign in to the FutureOS provider (future auth login) and have the keys and model list provisioned for you. Both work side by side, and you choose which models the picker offers (setup)
Goal Engineering Durable goals/todos/gates/monitors for long-horizon runs of 24+ hours — deterministic should-run kernel, event-sourced state, hard checks (evidence floor / acceptance contracts / verify gates), lease liveness, multi-agent (guide)
Scheduled Tasks Recurring work without you in the loop: a reusable prompt + working directory + model/thinking level, run at full permission on a schedule (interval / daily / weekly / monthly / yearly, or a single date) — and on demand whenever you want. Every run is an ordinary conversation plus a run ledger with status, result summary and prompt-version history (guide)
Powerful Built-in Skills 15+ skills out of the box for everyday agent work — image read & generation, PDF/Word parsing, web search, browser control, slides, software install, and the /future-goal long-run goal orchestrator (builtin)
Forkable Sessions Branch any conversation like a repo — fork, clone, and tree navigation over JSONL session history
Rust Core Agent, IM channel bridge, goal control plane, CLI, and TUI are all written in Rust — high performance with memory safety

Quick Start

Install

One line, no source build required:

macOS / Linux — one script, auto-detects the platform: macOS gets the official signed app (arm64 / Intel); Linux gets the .deb on Debian/Ubuntu (desktop app + unified future CLI) or the portable tarball everywhere else:

curl -fsSL https://dl.future-os.cn/install.sh | bash

Windows (PowerShell) — runs the signed installer silently:

iex (irm https://dl.future-os.cn/install.ps1)

Step-by-step installation for every platform (desktop app, toolchains, GUI packaging) is in the Build & Install guide.

The installers finish by running future init.

Configure a model

The agent needs at least one model provider before it can answer. The interactive setup supports both FutureOS and custom providers:

FutureOS hosted models — device-flow sign-in provisions keys and a model list automatically:

This works whether or not the agent is running: with the agent up the key is applied live; without it the key is written to ~/.future/agent/auth.json and picked up when the agent starts.

Prefer your own keys? (BYOK & custom providers)

Use a known provider. Put your API key in ~/.future/agent/auth.json, keyed by provider name. See the built-in model catalog — most providers have built-in base URLs and auto-discover their models:

{
  "openai": { "type": "api_key", "key": "sk-..." }
}

For providers with user-specific base URLs (e.g. Azure's YOUR_RESOURCE), add a baseUrl field in auth.json:

{
  "azure": { "type": "api_key", "key": "sk-...", "baseUrl": "https://my-resource.openai.azure.com/openai/v1" }
}

Custom provider. For providers not in the built-in catalog, specify everything in ~/.future/agent/models.json:

{
  "providers": {
    "my-provider": {
      "apiKey": "sk-...",
      "baseUrl": "https://my-api.example.com/v1",
      "models": [
        { "id": "my-model", "name": "My Model", "contextWindow": 128000, "maxTokens": 16384 }
      ]
    }
  }
}

Install skills (optional)

Skills are add-on capability packs the agent picks up from ~/.future/agent/skills/. Browse the catalog and install what you need — this only needs network access, not a running agent:

future skills list             # browse the skill catalog
future skills install <name>   # install one skill
future skills install          # no name: install every built-in skill

Skip this and the agent still answers fine — skills just add ready-made workflows. uninstall / update and friends are in the CLI reference.

Run the agent

The terminal and CLI clients are thin gRPC clients. They connect over per-user local IPC by default (a Unix-domain socket on macOS/Linux, a current-user-only named pipe on Windows). Unix honors FUTURE_AGENT_SOCKET; otherwise the endpoint always lives under the instance's FutureOS home: ~/.future/run/agent.sock by default, <FUTURE_HOME>/run/agent.sock for an instance started with its own home (future agent --home DIR) — see isolated instances. If the FutureOS home sits on a filesystem that cannot host Unix sockets (e.g. NFS), point FUTURE_HOME at a directory on a local filesystem. Desktop GUI/headless first attach to a compatible external Agent; when the default endpoint is absent and its instance lock is free, they run the complete Agent in their own process. Incompatible or locked/unavailable services produce an error without starting a second Agent. The TUI retains its independent Agent startup. You can also start an external Agent yourself:

future agent     # start the agent in the terminal (logs to stdout; Ctrl-C to stop)

Quitting an embedded Desktop stops work from every connected client, including CLI/TUI conversations. An attached external Agent stays running; Desktop cancels its own submitted runs. See Desktop Agent lifecycle and recovery.

Then launch the terminal UI from the same future command:

Published builds check for updates once in the background after TUI startup. A newer version is shown as a local notice with the official installer link; nothing is installed automatically. Release builds check the release channel, and test/nightly builds check nightly. Local/source builds skip the check. Network failures are silent; future tui --offline disables the check, and non-interactive commands never perform it.

Remote / development mode: pass --grpc-addr 127.0.0.1:50051 to future agent to serve plain TCP instead, and point clients at it with FUTURE_AGENT_GRPC_ADDR=127.0.0.1:50051. TCP is opt-in — never expose it beyond a trusted interface.

FutureOS terminal UI — built-in skills loaded, /help command palette

future <cmd> is the unified entry point for every Rust component: future agent, future tui, future channel, future goal. Each runs the same code as the standalone binary of the same name (the future-* binaries still exist as build targets — cargo build -p future-tui etc. — but are no longer installed by default).

If connection fails, check Agent discovery, compatibility and instance ownership — see Troubleshooting.

Essential Slash Commands (TUI)

Command Purpose
/help Show all commands and shortcuts
/model [name] Select / switch model
/new Start a new session
/sessions Browse and switch sessions
/tree Session tree with fork/clone hierarchy
/fork Fork from a chosen message
/clone Clone the current session
/name <name> Set the session name
/scoped-models Configure the model enable/disable list
/compact Compress conversation context
/status Session state, token usage, cost
/stop Abort current generation
/cancel <run-id> Cancel a queued run
/cwd <dir> Change the working directory
/approve <request-id> Approve a pending tool execution
/reject <request-id> Reject a pending tool execution
/reload Reload skills and context files
/skills Browse, install and manage skills
/providers Configure providers and models
/theme [id] Switch the color theme

Run /help in the TUI for the full list (40+ commands).

Keyboard Shortcuts (TUI)

Key Action
ctrl+c Interrupt / exit
ctrl+l Clear screen / redraw
ctrl+p Cycle model
ctrl+t Cycle thinking level
shift+tab Cycle thinking
ctrl+o Expand / collapse thinking
ctrl+g Expand / collapse tool output
ctrl+d Compact view: fold runs of tool calls and thinking
ctrl+x Copy the last answer
ctrl+r Browse sessions
ctrl+v Paste clipboard (image or text)
tab Autocomplete
↑↓ Scroll / navigate lists
page up / page down Scroll the chat
ctrl+↑ / ctrl+↓ Scroll the chat line by line
enter Submit / accept
escape Close popup

Troubleshooting

Symptom Fix
Client exits with a connection / gRPC error Run future doctor; check Agent startup/version/lock errors and that client/Agent use the same user and IPC environment. See the Desktop Agent guide before changing service ownership. Only in explicit TCP mode, check the configured address/port.
Agent replies with an auth / "no model" error No model configured yet. Run future config — see Configure a model.
Build / install problems See Build & Install (platform toolchains, linker, GUI packaging).

Community

💬 Discussions • 🐛 Issues • 🔒 Security • 📖 Wiki • Third-Party Notices