Terminal, desktop, mobile, and your chat apps — one Rust core, one agent, 3,800+ models.
Every tool call gated by your approval. Local-first. Open source.
Quick Start • Features • 3,800+ Models • Commands • Troubleshooting
⭐ If FutureOS is useful to you, a star helps others find it.
| Category | Details |
|---|---|
| Multi-Interface | Terminal UI (TUI), desktop app (GUI), mobile apps (Android & iOS), CLI, IM bots — one agent, everywhere |
| Trust-First Tool Execution | read, write, edit, shell — every call gated by your approval; sandbox tiers (off / manual / sandbox), with an OS sandbox on macOS (Seatbelt) and Windows (restricted token); a lean tool set, no prompt bloat |
| Model Flexibility | 3800+ built-in models across 140+ providers (catalog); custom providers via models.json; scoped model lists |
| Loop 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) |
| 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-loop 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, loop control plane, CLI, and TUI are all written in Rust — high performance with memory safety |
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 agent needs at least one model with an API key before it can answer.
FutureOS hosted models — device-flow sign-in provisions keys and a model list automatically:
future auth login
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.
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 }
]
}
}
}
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.
The terminal and CLI clients are thin gRPC clients. The agent must be running
first, listening on 127.0.0.1:50051:
future agent # start the agent in the terminal (logs to stdout; Ctrl-C to stop)
Then launch the terminal UI from the same future command:
future tui # terminal UI
future <cmd>is the unified entry point for every Rust component:future agent,future tui,future channel,future loop. Each runs the same code as the standalone binary of the same name (thefuture-*binaries still exist as build targets —cargo build -p future-tuietc. — but are no longer installed by default).A client that exits with a connection / gRPC error almost always means the agent isn't running yet — see Troubleshooting.
| Command | Purpose |
|---|---|
/help | Show all commands and shortcuts |
/model [name] | Select / switch model |
/new | Start a new session |
/sessions | Browse and switch sessions |
/compact | Compress conversation context |
/scoped-models | Configure model enable/disable list |
/clone | Clone the current session |
/fork | Fork the current session |
/tree | Session tree with fork/clone hierarchy |
/name [n] | Set the session name |
/status | Session state, token usage, cost |
/stop | Abort current generation |
/cwd | Change the working directory |
/approve | Approve pending tool execution |
/reject | Reject pending tool execution |
/cancel <run-id> | Cancel a queued run |
/reload | Reload skills and context |
| Key | Action |
|---|---|
ctrl+p | Cycle model |
ctrl+t | Cycle thinking level |
ctrl+o | Expand / collapse thinking |
ctrl+r | Browse sessions |
ctrl+c | Interrupt / exit |
tab | Autocomplete |
enter | Submit / accept |
escape | Close popup |
↑↓ | Scroll / navigate lists |
| Symptom | Fix |
|---|---|
| Client exits with a connection / gRPC error | The agent isn't running. Start it (future agent) and check nothing else holds the port: lsof -i :50051. |
| Agent replies with an auth / "no model" error | No model configured yet. Run future auth login, or add a provider to models.json — see Configure a model. |
| Build / install problems | See Build & Install (platform toolchains, linker, GUI packaging). |
💬 Discussions • 🐛 Issues • 🔒 Security • 📖 Wiki • Third-Party Notices
Rust
80.0%
TypeScript
17.3%
Terminal, desktop, mobile, and your chat apps — one Rust core, one agent, 3,800+ models.
Every tool call gated by your approval. Local-first. Open source.
Quick Start • Features • 3,800+ Models • Commands • Troubleshooting
⭐ If FutureOS is useful to you, a star helps others find it.
| Category | Details |
|---|---|
| Multi-Interface | Terminal UI (TUI), desktop app (GUI), mobile apps (Android & iOS), CLI, IM bots — one agent, everywhere |
| Trust-First Tool Execution | read, write, edit, shell — every call gated by your approval; sandbox tiers (off / manual / sandbox), with an OS sandbox on macOS (Seatbelt) and Windows (restricted token); a lean tool set, no prompt bloat |
| Model Flexibility | 3800+ built-in models across 140+ providers (catalog); custom providers via models.json; scoped model lists |
| Loop 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) |
| 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-loop 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, loop control plane, CLI, and TUI are all written in Rust — high performance with memory safety |
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 agent needs at least one model with an API key before it can answer.
FutureOS hosted models — device-flow sign-in provisions keys and a model list automatically:
future auth login
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.
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 }
]
}
}
}
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.
The terminal and CLI clients are thin gRPC clients. The agent must be running
first, listening on 127.0.0.1:50051:
future agent # start the agent in the terminal (logs to stdout; Ctrl-C to stop)
Then launch the terminal UI from the same future command:
future tui # terminal UI
future <cmd>is the unified entry point for every Rust component:future agent,future tui,future channel,future loop. Each runs the same code as the standalone binary of the same name (thefuture-*binaries still exist as build targets —cargo build -p future-tuietc. — but are no longer installed by default).A client that exits with a connection / gRPC error almost always means the agent isn't running yet — see Troubleshooting.
| Command | Purpose |
|---|---|
/help | Show all commands and shortcuts |
/model [name] | Select / switch model |
/new | Start a new session |
/sessions | Browse and switch sessions |
/compact | Compress conversation context |
/scoped-models | Configure model enable/disable list |
/clone | Clone the current session |
/fork | Fork the current session |
/tree | Session tree with fork/clone hierarchy |
/name [n] | Set the session name |
/status | Session state, token usage, cost |
/stop | Abort current generation |
/cwd | Change the working directory |
/approve | Approve pending tool execution |
/reject | Reject pending tool execution |
/cancel <run-id> | Cancel a queued run |
/reload | Reload skills and context |
| Key | Action |
|---|---|
ctrl+p | Cycle model |
ctrl+t | Cycle thinking level |
ctrl+o | Expand / collapse thinking |
ctrl+r | Browse sessions |
ctrl+c | Interrupt / exit |
tab | Autocomplete |
enter | Submit / accept |
escape | Close popup |
↑↓ | Scroll / navigate lists |
| Symptom | Fix |
|---|---|
| Client exits with a connection / gRPC error | The agent isn't running. Start it (future agent) and check nothing else holds the port: lsof -i :50051. |
| Agent replies with an auth / "no model" error | No model configured yet. Run future auth login, or add a provider to models.json — see Configure a model. |
| Build / install problems | See Build & Install (platform toolchains, linker, GUI packaging). |
💬 Discussions • 🐛 Issues • 🔒 Security • 📖 Wiki • Third-Party Notices
Rust
80.0%
TypeScript
17.3%