Show HN: Atlan, Your Mobile-Focused AI Agent Atlan, a mobile-focused AI agent and software engineering cockpit built by John Viruet / Mid-Atlantic AI, turns a phone into a complete development workstation, integrating code editing, terminal access, local and cloud models, deterministic verification, build automation, and agent orchestration into a single execution environment. The Apache-2.0 licensed tool runs on Ubuntu proot under Termux on Android and any Linux/macOS host, with 838 automated tests green across 25 suites, and measured ~1.3s to first token warm vs ~7s cold on a Galaxy S24 Ultra. It binds to loopback only for security, and its resident AI, Atlan, provides live self-awareness, visible reasoning, voice I/O, and a durable auto-respawning server. An AI-native software engineering cockpit that turns a phone into a complete development workstation. Instead of wrapping an LLM, Atlan integrates code editing, terminal access, local and cloud models, deterministic verification, build automation, and agent orchestration into a single execution environment — one page at http://127.0.0.1:4589 . The reference platform is Ubuntu proot under Termux on a phone; it also runs on any Linux/macOS host see docs/SETUP.md . The cockpit binds to loopback only — nothing reaches it from the network unless you deliberately build a tunnel. What your chosen engines send to their providers is a separate question, answered in full in docs/SECURITY.md . Built by John Viruet / Mid-Atlantic AI. Licensed Apache-2.0 — free to use and fork; keep the attribution. Its resident AI, Atlan , is the cockpit's living mascot — a calm presence that reacts to what's actually happening as you build. Status 2026-08-08 :M1–M6 plus streaming chat on awarm, fast session the CLI is spawned once and kept alive — no ~3.7s cold-start per turn; measured ~1.3s to first token warm vs ~7s cold ,live self-awareness Atlan perceives the current time, your active tab, running agents, today's token burn, and the open project ,visible reasoning summarized thinking streams to a panel , password auth, worker hierarchy, attachments, a code editor, voice I/O 12 AI-model + 10 voice providers— browser voice free by default, the rest BYO-key, OpenAI-Realtime honestly marked roadmap , and adurable auto-respawning server bin/atlan-serve.sh with optional Termux:Boot reboot-autostart.838 automated tests green across 25 suites see docs/RECEIPTS.md . Runs loopback-only by design; the Preflight security gate goes green once you've set a password it's part of first-run . New in this pass:conversationspersist across a refreshwith a searchable history and archiving that never deletes ·chat-to-chat and chat-to-project messages, bounded by rate, duplicate, backlog and relay-depth limits · apreview full-screentoggle · aDoctor grouped by the question each check answers, with a one-tap copy-report and a real agent-CLI connection check · aPersona+ drafterthat fills the form from a plain sentence · and the removal of the last places a vendor name stood in for "the engine you picked" — the wire protocol, the runtime decisions, and the copy. Confinement, measured on a real Galaxy S24 Ultra Android 16, kernel 6.1.145-android14, arm64 :14/16 rungs,establishes T2, short of T3 only by Landlock and sibling-memory — because the GKI kernel branch freezes when a device ships, so no OS update will add it. declaredTier still defaults toT0on every host: those numbers come from an adb shell , and Atlan runs as untrusted app under Android's own zygote seccomp filter, which can only take capabilities away. See docs/SECURITY.md . Building on a phone normally means a cramped terminal and no feedback loop. Atlan makes the phone a real dev surface: you talk to an agent that edits your code, you see the app it's changing, its errors flow back to the agent automatically, you can hand any conversation to the command line and back, you can send agents off to work on budgets while you sleep, and you can build an installable APK from the same screen. It's opinionated toward honesty — every capability is labeled for what it actually is, and every dangerous thing has a wall you can see. Atlan is a Node server you drive from a browser. Where the server can run decides how you use it: | Platform | On-device local server | How you actually run it | |---|---|---| PC — Linux / macOS / Windows | ✅ easiest | Just Node. git clone && npm install && node server . The most portable target. | Android capable phone | ✅ | Termux from F-Droid → proot-distro install ubuntu → Node → clone → run. Inside the proot, not native Termux — bionic libc can't run the engine CLIs and can't build node-pty , so skipping the proot step is a dead end the launcher and Doctor now say so instead of crash-looping . A power-user setup, not a tap-to-install app. Aggressive-OEM phones Samsung/Xiaomi battery/phantom killers and low-RAM devices may fight it. | iPhone / iPad | ❌ impossible | iOS forbids a shell or background server outright. Cloud-client mode only below . | Any phone, incl. iPhone | ✅ as a client | Cloud-client mode: run the server once on a PC / home node / cloud VM, connect the phone as a plain PWA browser client. No Termux on the phone. | The APK does not remove the Termux requirement on Android — the one-button APK is a wrapper/client ; the server still runs in Termux/proot, because the Node server needs a Linux userland and Termux/proot is that userland. The broadly-shareable path is cloud-client mode host the server once, connect any phone ; the phone-local Termux route is the privacy / power-user mode. See docs/SETUP.md for both. You also need an engine. Atlan is a cockpit that drives models — it needs at least one: a Claude subscription/API key full agent, "has hands" , or a free cloud key like Gemini/Groq chat brains, no hands , or a local llama-server model free, if the hardware can run it . With none configured, the app runs but the agent has no brain. Project picker — every folder in your projects directory configurable, defaults to /root with a .git or package.json . Everything else fleet, build, terminal, editor acts inside the picked project. Streaming + thinking + self-aware — replies stream token-by-token on a warm session the agent CLI is spawned once and kept alive, so there's no cold-start wait per turn ; a collapsible panel shows the model's summarized reasoning live; a "working…" indicator fires the instant you send. Atlan is self-aware of live state — each turn quietly carries the current time, your active tab, running fleet agents, today's token burn, and the open project, so it genuinely knows what's happening as you work. Attachments — 📎 images/audio/video/files/folders drag, paste, or reference a path . Images go to vision, files/folders become path references the agent reads, audio/video are routed to a multimodal model Gemini/OpenAI and folded into the turn as text. Engine switcher , four honest groups: Claude Code agent — fable-5 , opus-4.8 , sonnet-5 , haiku-4.5 . Real hands: reads/edits files, runs tools, builds. Permission-carded. Agent CLIs — Codex and Gemini CLI, running headless full-auto in your repo all-or-nothing approvals; Claude stays the careful, card-gated primary . On-phone free — local models via llama-server chat only . Cloud brains — a wide, BYO-key spread through one OpenAI-compatible adapter chat only; they'll tell you they have no hands : Gemini, OpenAI, DeepSeek, Kimi Moonshot , xAI Grok, Mistral, Groq, Together, OpenRouter, Fireworks, Cohere . Adding another provider is a single base-URL row. Each defaultModel is just a starting point — type any model the provider offers.- Unavailable options are disabled and say exactly what they need; Settings → Engine keys has a "how to get ↗" link for every one. Permission cards — when Claude wants a risky action you get Allow/Deny. Deny is always safe; the agent is told why and adapts. Conversations persist. A pull-to-refresh used to destroy the thread — chat lived only in the DOM and in a per-socket map the server clears on close. Transcripts are durable now FLEET DIR/chats/ .jsonl , appended a line at a time so a long chat isn't O n² writes on phone flash , so a reload replays where you were. 🗂 History lists past conversations — searchable, titled by your first message rather than the assistant's tool preamble. Archiving, never pruning. Nothing is deleted to make room. Usage is measured — size, free disk, available RAM — and when it matters the Doctor says so and asks . Archived conversations stay in the same list, marked, and open on tap; the gzip they came out of is an implementation detail you never see. Chat-to-chat and chat-to-project messages. Send a note to another conversation, or to a project — "tell whoever is working on auth" — from the History list. A live conversation gets it on screen; a dormant one keeps it in its transcript until you open it. Every peer message is rendered with its own style and a "from" byline: agents run full-auto here, so an unattributed channel between them would be an injection path, and the attribution is the control. Rate, duplicate, backlog and relay-depth limits bound it. Session handoff — after each turn a line shows cost + session id; tap to copy claude --resume