Your own machines, connected to wherever you are.
Website · Web app · Get started · Architecture · 简体中文
still.fail connects the machines you choose to wherever you are. Each runs a station, and you use it from the web, desktop and Android apps, a Slack thread or a Feishu chat: its files, its browser and desktop, and the runtimes signed in there (Claude Code, Codex, DeepSeek Harness or Grok Build), which keep their workspace, history and background jobs between messages. A workspace's stations work as one, and conversations stay on them: clients reach stations peer to peer.
- Your machine, from anywhere. Browse and share its files, see and drive its browser or desktop, finish a CLI's sign-in from a card in the app, or lend the station your Android phone over adb.
- Machines that work as one. Stations run on macOS, Linux and Windows and use the runtimes and subscriptions signed in on that machine. Stations of a workspace work together: agents run tasks and open chats on other stations, and stations can lend each other profiles and skills.
- Where your team already talks. Mention the bot in a Slack thread or a Feishu (Lark) group, or open a chat in the web, desktop or Android app. Everyone in the conversation works with the same agent.
- Sessions that persist. Each chat keeps its working directory, history and memory. Builds, watches and web previews keep running as jobs and services after the turn ends, and report back when they finish.
- Peer-to-peer. Clients connect to stations over iroh, directly on the local network or through a relay. Conversations are stored on stations, not in the cloud.
- Security mode. Optionally, members, devices and stations are accepted only when signed by trusted devices, so the cloud alone cannot grant access. In that mode, a vault keeps the credentials agents use encrypted, and hands them out only after a person approves.
- A station (
station/, TypeScript on Node, with a few prebuilt native parts) runs on a machine you choose. It starts and keeps the agent sessions, connects to Slack and Feishu, and stores conversations locally in SQLite. - A workspace groups people and stations. The cloud service (
cloud/, Cloudflare Workers) handles accounts, workspaces and member credentials, and runs the relays. Conversation content does not pass through its database. - Clients (web, desktop and Android) share one client core in TypeScript (
client/core-ts), which caches the workspace's data and keeps it in sync with the stations.
See docs/design.md and docs/cloud.md for details.
- Open the web app, or download the desktop app (macOS on Apple silicon, Windows x64) or the Android app from still.fail.
- Create a workspace. The free plan includes one workspace with one person and two stations.
- Choose Add station and run the command it shows on the machine that will run your agents: macOS (arm64), Linux (x64, arm64) or Windows (x64).
- Add a profile on that station: sign in to Claude Code, Codex, DeepSeek Harness or Grok Build. Those runtimes and their accounts are separate from this project, and agents run with that machine's user permissions; read the trust boundary first.
- Start a chat in the app, or connect a Slack or Feishu bot to the station and mention it in a thread.
Every station must join a workspace before it can run conversations.
docs/development.md covers toolchains, builds and an isolated local setup: a local control plane with mock sign-in, a local relay and a disposable station. The cloud tests run without any accounts:
git clone https://github.com/AFK-surf/still.fail.git
cd still.fail
pnpm install --frozen-lockfile
cd cloud && pnpm install --frozen-lockfile && pnpm run types && pnpm testSelf-hosting is possible but not yet supported as a product. The deployment scripts and Wrangler configurations target the hosted still.fail service (its domains, relays and admin account); replace that configuration before deploying your own instance. See Production self-hosting.
Desktop and Android builds connect to the hosted service at app.still.fail by default. Clients send operation traces (names, timings and errors, without message content) to the configured cloud. Product analytics (PostHog) are only included when a key is supplied at build time, so builds from this repository have none; station error reports are off unless the station's operator enables them. See docs/telemetry.md and the privacy policy.
| Path | Contents |
|---|---|
station/ |
Station (stillfail-station): agent runtimes, Slack and Feishu, jobs, files, screens, vault; native parts in station/native/ |
client/ |
Shared client core (core-ts), its native shells and translations (i18n) |
web/ |
Web app, official site and component stories |
apps/mbui/ |
The apps (Android, iOS, macOS, Windows, Linux), written in mbui (apps/mbui/mbui) |
cloud/ |
Accounts, workspaces, relays and releases on Cloudflare |
media/ |
Photos, video and books apps built on the same platform, in development |
docs/ |
Design and operation notes; release notes in docs/releases/ |
test/, spike/ |
Integration and browser tests; experiments that verified runtime assumptions |
vendor/ |
Patched third-party Rust crates |
Some design notes are only in Chinese for now.
- Development setup and contributing
- Architecture, client core, cloud, station storage, station modules
- Station peers and remote tasks, sharing between stations, search, files, screens
- Feishu, Grok Build, DeepSeek Harness
- Security mode, vault, notifications, telemetry
- Operations: how the maintainers build and deploy the hosted service, on their own infrastructure
- Security: private reporting and the station's trust boundary
still.fail is under active development and pre-1.0. Versions are 0.1.<n>; the beta channel follows main, and stable releases are published from reviewed release notes in docs/releases. Stations, clients and the cloud update independently, so changes keep older and newer versions working together.
MIT. Vendored code, dependencies and third-party marks retain their own licenses; see third-party notices.