99 ╚══════╝╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
1010```
1111
12- ### 💧 Splash — Autonomous Agent Platform
12+ ### Splash — Autonomous Agent Platform
1313
14- * TypeScript monorepo · 10-phase agent loop · multi-provider · Ink TUI · background runs *
14+ * A production-grade, self-improving, multi-provider agent platform that is simple, fast, beautiful, and safe. *
1515
1616[ ![ node] ( https://img.shields.io/badge/node-%E2%89%A520-2dd4bf?style=flat-square )] ( )
1717[ ![ tests] ( https://img.shields.io/badge/tests-93%20passing-22c55e?style=flat-square )] ( )
2121
2222---
2323
24- ## What is Splash?
24+ ## 60-Second Demo
2525
2626Splash is a ** local-first autonomous agent** you call from any directory. One global config file, one command — ` splash ` — and it builds, edits, debugs, runs shells, reads the web, drives bots, whatever the task needs.
2727
28- Under the hood: a ** 10-phase agent loop** (intake → understand → plan → context → tool-select → execute → verify → correct → finalize → persist) over a ** multi-provider router** (OpenRouter/Kimi, Claude, GPT, Gemini, DeepSeek, Ollama), backed by a ** persistent run store** you can inspect live in an Ink TUI.
29-
30- It's designed to be dead simple — install it, drop a key, go.
31-
32- ---
33-
34- ## Quick Start
35-
3628``` bash
3729# 1. Install via npm (works natively on Windows, macOS, and Linux)
3830npm install -g splash-agent
@@ -44,75 +36,56 @@ splash init # pick provider, paste key, pick model, pick safety
4436splash " summarize this folder"
4537splash " build a FastAPI todo service" --background
4638splash tui # live dashboard
47- # 3. Advanced Features
48- splash voice # interactive STT/TTS loop
49- splash swarm " task" # parallel sub-agents
50- splash antigravity start # spawn background daemon
5139```
5240
5341No ` pnpm dev ` . No per-project ` .env ` . Just ` splash ` .
5442
5543---
5644
57- ## Features
45+ ## Provider Matrix
5846
59- | | |
60- | ---| ---|
61- | ** Global CLI** | One binary. Works from any cwd. ` ~/.splash/config.json ` holds keys + defaults. |
62- | ** Multi-Provider** | OpenRouter (default — unlocks Kimi K2 / DeepSeek / Qwen / Claude / GPT), Anthropic, OpenAI, Gemini, DeepSeek, local Ollama. |
63- | ** 10-Phase Loop** | Plan → execute → verify → self-correct. Per-step retry budget. Tool-call trace. |
64- | ** Background Runs** | ` splash "..." --background ` detaches. Inspect with ` splash runs ` or attach via TUI. |
65- | ** Ink TUI** | Live dashboard: runs list, task graph, resources, streaming logs, keyboard controls. |
66- | ** Platform Bots** | Telegram, Slack, WhatsApp (Twilio), Messenger (Meta), Discord — shared agent behind all. |
67- | ** Safety Engine** | Pattern-based policy with ` strict ` / ` standard ` / ` permissive ` modes, per-action confirmations. |
68- | ** Persistent Memory** | File-backed memory of successful tool strategies across runs. |
69- | ** 18 Built-in Skills** | repo-analysis, code-edit, task-queue, test-runner, debugger, pr-creator, docs-generator, web-scraper, data-analyst, sql-builder, python-runner, shell-runner, and more. |
70- | ** Swarm & Voice** | ` splash swarm ` spawns parallel research agents. ` splash voice ` drops you into a Whisper STT / Edge TTS audio chat loop. |
71- | ** Self-Improvement** | ` splash self-improve ` scans recent logs and permanently alters agent behavior by writing to ` ~/.splash/learnings.md ` . |
72- | ** Antigravity Daemon** | ` splash antigravity start ` detaches a daemon to poll ` ~/.splash/queue.json ` for autonomous execution of queued tasks. |
47+ | Provider | Access | Models | Free Tier? | Best For |
48+ | ---| ---| ---| ---| ---|
49+ | ** OpenRouter** | API Key | 300+ | Yes | Massive catalog, cheap/free models, fast testing |
50+ | ** Claude** | API Key | Opus, Sonnet, Haiku | No | Coding, complex reasoning, large context |
51+ | ** OpenAI** | API Key | GPT-4o, o3, o4-mini | No | General purpose, reliable tool calling |
52+ | ** Gemini** | API Key | 2.5 Pro, 2.5 Flash | Yes | Huge context windows, fast |
53+ | ** DeepSeek** | API Key | R1, V3 | Yes | Strong reasoning, extremely affordable |
54+ | ** Ollama** | Local | Llama3, Mistral, Qwen | Yes | Complete privacy, offline use, no API keys |
7355
7456---
7557
76- ## Commands
77-
78- ### Core
58+ ## Command Reference
7959
8060| Command | What it does |
8161| ---| ---|
82- | ` splash ` | Interactive chat (defaults to chat when no args) |
62+ | ** Run ** | |
8363| ` splash "do X" ` | One-shot task, foreground |
84- | ` splash "do X" --background ` | Detached run; returns an id |
85- | ` splash init ` | 30-second wizard → writes ` ~/.splash/config.json ` |
86- | ` splash tui ` | Open the live TUI dashboard |
87- | ` splash voice ` | Interactive continuous audio STT/TTS loop |
88- | ` splash swarm <task> ` | Spawns 3 parallel sub-agents to synthesize an answer |
89- | ` splash antigravity start ` | Starts background polling daemon for ` TaskQueueSkill ` |
90- | ` splash self-improve ` | Analyze recent runs to permanently extract behavior rules |
91- | ` splash help ` | Show full help |
92-
93- ### Runs
94-
95- | Command | What it does |
96- | ---| ---|
97- | ` splash runs list [--json] ` | Show active/recent runs |
98- | ` splash runs logs <id> [--follow] ` | Tail events for a run |
99- | ` splash runs attach <id> ` | Open a run in the TUI |
100- | ` splash runs stop <id> ` | Cancel a running run |
101- | ` splash runs retry <id> [-b] ` | Re-run a finished task |
102- | ` splash runs show <id> ` | Full JSON record |
103-
104- ### Config
105-
106- | Command | What it does |
107- | ---| ---|
108- | ` splash config list ` | Show effective config (keys redacted) |
109- | ` splash config doctor [--json] ` | Verify keys, write perms, provider reachability |
110- | ` splash config preset fast\|balanced\|safe ` | Apply a profile |
111- | ` splash config set <key> <val> ` | Set ` defaultProvider ` , ` defaultModel ` , ` safetyMode ` |
64+ | ` splash "do X" --background ` | Detached background run; returns an id |
65+ | ** Config** | |
66+ | ` splash config list/get/set/doctor/preset ` | Manage system configuration |
11267| ` splash config set-key <provider> <key> ` | Save a provider API key |
113- | ` splash config set-bot <bot> <field> <val> ` | Save a bot credential |
68+ | ` splash config set-bot <bot> <field> <val> ` | Save a bot credential |
69+ | ** Providers** | |
70+ | ` splash providers list ` | Show configured providers + health status |
71+ | ` splash providers test <name> ` | Ping provider API, report latency |
72+ | ** Skills** | |
73+ | ` splash skills list ` | Manage skills |
74+ | ** Memory** | |
75+ | ` splash memory list/search/export ` | Memory operations |
76+ | ** Runs** | |
77+ | ` splash runs list/logs/stop/retry/attach ` | Run management |
78+ | ` splash runs show <id> ` | Full JSON record |
79+ | ** System** | |
80+ | ` splash init ` | 5-step setup wizard |
81+ | ` splash maintenance [--apply] ` | Self-check: config drift, skill failures, provider health |
82+ | ` splash self-improve ` | Analyze recent runs, write learnings |
83+ | ** Advanced** | |
84+ | ` splash voice ` | Interactive STT/TTS loop |
85+ | ` splash swarm <task> ` | Spawns parallel sub-agents to synthesize an answer |
86+ | ` splash antigravity start ` | Starts background polling daemon |
11487
115- ### Platforms
88+ ### Platform Bots
11689
11790` splash telegram ` · ` splash slack ` · ` splash whatsapp ` · ` splash messenger ` · ` splash discord `
11891
@@ -123,7 +96,7 @@ Each reads its credentials from `~/.splash/config.json` (or env). Webhook ports:
12396## The TUI
12497
12598```
126- ┌─ 💧 Splash · Autonomous Agent Dashboard ──── ≈ ─┐
99+ ┌─ Splash · Autonomous Agent Dashboard ─── ──── ≈ ─┐
127100│ │
128101│ ┌── Runs ───┐ ┌── Task Graph ────────────────┐ │
129102│ │ ▸ ◌ build │ │ ✓ intake ✓ plan ◉ execute │ │
@@ -146,42 +119,13 @@ Each reads its credentials from `~/.splash/config.json` (or env). Webhook ports:
146119
147120---
148121
149- ## Architecture
150-
151- ```
152- bin/splash.mjs ← global launcher (resolves tsx, preserves cwd)
153- examples/cli.ts ← CLI router: chat | tui | runs | config | platforms
154- packages/
155- utils/ Result<T,E>, logger, theme (banner, spinners, droplet frames)
156- config/ schema + loader + ~/.splash store
157- safety/ pattern-based policy engine
158- memory/ file-backed persistent memory
159- providers/ Claude / OpenAI / Gemini / Ollama / OpenRouter router
160- connectors/ fs / terminal / database / http / browser / git
161- skills/ 18 reusable task recipes
162- core/
163- agent-loop.ts 10-phase orchestrator
164- runs/
165- events.ts typed RunEvent union
166- run-store.ts ~/.splash/runs + ndjson logs (schema v1)
167- run-manager.ts lifecycle + background worker
168- tui/app.tsx Ink dashboard
169- bots/ telegram / slack / whatsapp / messenger / discord
170- ```
171-
172- ** Run lifecycle:** ` queued → running → succeeded | failed | cancelled `
173-
174- Each transition is written to the persistent store. Events stream via append-only ndjson so both the CLI (` runs logs --follow ` ) and the TUI subscribe to the same source.
175-
176- ---
177-
178122## Configuration
179123
180124Config precedence (lowest → highest):
181125
1821261 . Schema defaults
1831272 . ` ~/.splash/config.json `
184- 3 . ` .env ` in cwd + ` SPLASH_* ` / ` ALPCLAW_* ` env vars
128+ 3 . ` .env ` in cwd + ` SPLASH_* ` env vars
1851294 . Explicit ` loadConfig() ` overrides
186130
187131** Env var names:** ` SPLASH_DEFAULT_PROVIDER ` , ` SPLASH_DEFAULT_MODEL ` , ` SPLASH_SAFETY_MODE ` , ` SPLASH_MEMORY_PATH ` , ` SPLASH_LOG_LEVEL ` .
@@ -190,100 +134,6 @@ Config precedence (lowest → highest):
190134
191135---
192136
193- ## Presets
194-
195- ``` bash
196- splash config preset fast # permissive safety, Kimi K2, foreground
197- splash config preset balanced # standard safety (default)
198- splash config preset safe # strict safety, confirms every action
199- ```
200-
201- ---
202-
203- ## Doctor
204-
205- ``` bash
206- splash config doctor
207- ```
208-
209- Checks:
210- - ✓ Provider key present
211- - ✓ Config dir writable
212- - ✓ Runs dir writable
213- - ✓ Default provider reachable
214-
215- Prints ` fix: ` hints for each failing check. Add ` --json ` for automation-friendly output.
216-
217- ---
218-
219- ## Background Runs in 3 Commands
220-
221- ``` bash
222- # 1. Start a task in the background
223- splash " refactor auth module to use JWT" --background
224- # → run_abc123 started (background)
225-
226- # 2. Check status
227- splash runs list
228- # → run_abc123 running "refactor auth module..." 12s
229-
230- # 3. Attach in the TUI
231- splash tui
232- # → live dashboard with logs, task graph, controls
233- ```
234-
235- ### Troubleshooting Runs
236-
237- | Problem | Fix |
238- | ---| ---|
239- | Stuck run (status never changes) | ` splash runs stop <id> ` then ` splash runs retry <id> ` |
240- | Corrupted run file | Delete ` ~/.splash/runs/<id>.json ` and ` ~/.splash/logs/<id>.ndjson ` |
241- | Non-TTY environment (CI, SSH pipe) | All commands fall back to plain text. Use ` --json ` for structured output. |
242- | TUI won't render | Ensure terminal supports 256-color. Set ` TERM=xterm-256color ` . Falls back to run list. |
243-
244- ---
245-
246- ## Development
247-
248- ``` bash
249- pnpm install # install all workspace deps
250- pnpm test # vitest — 93 tests across 12 test files
251- pnpm -r run build # type-check + build all 8 packages
252- pnpm dev # same as `splash` without the global link
253- ```
254-
255- ### Project Structure
256-
257- | Package | Purpose |
258- | ---| ---|
259- | ` @alpclaw/utils ` | Result type, logger, theme (banner, spinners, animations) |
260- | ` @alpclaw/config ` | Schema, loader, ` ~/.splash ` global store |
261- | ` @alpclaw/safety ` | Pattern-based policy engine |
262- | ` @alpclaw/memory ` | File-backed persistent memory |
263- | ` @alpclaw/providers ` | Multi-provider router (6 providers) |
264- | ` @alpclaw/connectors ` | fs / terminal / database / http / browser / git |
265- | ` @alpclaw/skills ` | 18 built-in task recipes |
266- | ` @alpclaw/core ` | Agent loop, RunManager, TUI |
267-
268- ---
269-
270- ## Goals & Non-Goals
271-
272- ** Goals:** Production-grade. Local-first. Fast first-run. Observable. Extensible (drop a new skill or connector in one file).
273-
274- ** Non-goals (this phase):**
275- - Multi-host distributed orchestration
276- - Cloud-hosted run registry
277- - Web UI
278-
279- ---
280-
281- ## Legacy Name
282-
283- Splash is the rebrand of ** AlpClaw** . The ` alpclaw ` binary and ` ALPCLAW_* ` env vars still work — they delegate to ` splash ` . Legacy ` ~/.alpclaw/config.json ` is auto-migrated on first read.
284-
285- ---
286-
287137## License
288138
289139MIT
0 commit comments