astral-web-ui
v1.0.2
Published
A minimal and modern, local-first chat interface for AI — with tabs and a visual branching conversation tree. No Docker, no database. Everything runs on your own machine. Open source.
Readme
Astral Web UI
A minimal and modern, local-first chat interface for AI — with tabs and a visual branching conversation tree. No Docker, no database. Everything runs on your own machine. Open source.
A note on how this was built: I built this project with Google AI Studio, with a lot of manual testing, debugging, and back-and-forth to get it working properly.

Why this exists
There are already excellent, robust chat interfaces out there — LibreChat, LobeChat, Open WebUI, and others. This project isn't trying to out-feature them.
The focus here is different: a minimalistic chat interface with a few but genuinely useful features, done well, rather than a large number of them. Specifically: a visual branching conversation tree, browser-style tabs, and a Zen Mode for distraction-free chatting.
If you want more features added, that's welcome — but the direction won't change: a simple, minimalistic, modern, local chat interface, first and always.
Features
- Branch tree — Editing a message or regenerating a response keeps both
versions as siblings in a tree, instead of overwriting anything. See and click through the full conversation tree, not just a
left/right arrow.

- Tabs — Open multiple conversations at once, browser-tab style.
- Zen Mode — Strips away everything except the conversation itself, for distraction-free
chatting with AI.

- Command panel — Quick keyboard-driven navigation.
- Bring your own key — Supports Gemini, OpenAI, Anthropic, and any OpenAI-compatible provider, plus local models via Ollama/LM Studio.
- Zero backend infrastructure — No cloud database, no account system; everything runs locally on your machine.
Getting Started
Option 1 — Quick start (recommended for most people)
npx astral-web-uiThis downloads and launches the app, opening it in your browser automatically. Requires Node.js. Each time you run this command, it checks for the latest published version.
Option 2 — Full offline launches (for local model users)
If you're using local models (Ollama/LM Studio) and want to be certain the launch itself never needs internet, not just the chatting, you have two ways to do this:
A) Force offline mode with npx — after you've run npx astral-web-ui normally at least
once while online, you can launch it with zero internet from then on:
npx --offline astral-web-uiB) Clone the repo — never touches npm's registry at all, even implicitly:
git clone https://github.com/RealPhonyx/Astral-Web-UI.git
cd Astral-Web-UI
npm install
npm run build
node bin/cli.jsTo update a cloned copy later, run git pull inside that same folder, then npm install and
npm run build again — no need to re-clone from scratch.
Configuration
On first launch, open Settings to enter your API key(s):
- Gemini / OpenAI / Anthropic — paste your key from the provider's dashboard
- Custom (OpenAI-compatible) — enter a base URL, optional API key, and model name; works with providers like Groq, OpenRouter, Together AI, and more
- Local models — point it at your local Ollama or LM Studio endpoint
Your API keys never leave your device — they're stored locally in your browser and sent directly to whichever provider you configure, with no server in between.
Tech Stack
React, TypeScript, Vite, Zustand, Tailwind CSS, @xyflow/react, Express (local server only).
Contributing
Any type of contributions are welcome — feature ideas, suggestions, bug reports, and fixes all included. Feel free to open an issue or a pull request.
License
MIT — see LICENSE.
