Desktop app for agent-sh — runs agent-sh sessions and exposes them through a browser UI.
- Multi-session — sidebar to spawn, switch, and close sessions
- Session persistence — conversations survive restarts
- Auto-title — LLM-generated session titles with plain-text fallback
- Live streaming — SSE with Markdown, syntax-highlighted code, diff views, and tool calls
- Reasoning compaction — consecutive think→tool rounds auto-collapse into a single expandable block
- Image support — paste/upload images for multimodal models with automatic compression and Blob URL rendering
- Model picker — searchable dropdown with real-time OpenRouter catalog (300+ models) grouped by provider
- Vision indicator — icon in the input bar shows when the active model supports images
- Collapsible status bar — toggle to hide/show model, cache, and balance info
- Cache hit ratio — circular progress ring showing prompt cache efficiency
- Provider balance — per-session balance for DeepSeek and OpenRouter
- Hot reload — apiKey and provider config changes take effect immediately, no restart needed
- Streaming perf — block-level incremental rendering, debounced highlighting, SPA DOM cache
- Sleep resilience — auto-pauses SSE on system sleep to prevent wake-up freezes
- Cross-platform — packaged for macOS (Apple Silicon), Windows (x64), and Linux (AppImage)
One-line install, no Gatekeeper prompt:
curl -fsSL https://raw.githubusercontent.com/firslov/ashub/main/install.sh | bashInstalls to /Applications and clears the quarantine flag.
Prefer the .dmg?
Download from Releases, drag to Applications, then:
- run
/usr/bin/xattr -dr com.apple.quarantine "/Applications/asHub.app", or - launch once, then open System Settings → Privacy & Security, scroll to the bottom and click Open Anyway.
Download the installer from Releases. Requires PowerShell 5.1+ (built into Windows 10/11).
Download the AppImage from Releases.
Requires Node.js ≥ 20.
git clone https://github.com/firslov/ashub.git
cd ashub
npm installElectron (desktop app):
npm run electron:devHeadless (CLI server, no window):
npm start -- --port 8080Browser (use any modern browser as the UI):
npm start -- --host 0.0.0.0 --port 7878
# then open http://localhost:7878Bind
0.0.0.0to allow access from other devices on your network. Use127.0.0.1(default) for local-only access.
Build a distributable package:
npm run electron:dist:mac # macOS .dmg
npm run electron:dist:win # Windows .exe| Flag | Default | Description |
|---|---|---|
--port N |
7878 |
HTTP port |
--host HOST |
127.0.0.1 |
Bind address |
--model NAME |
settings default | Model override |
--provider NAME |
settings default | Provider override |
MIT
