Run AI coding and automation work from one place: on your own machines, from your phone, or from chat.
datawatch is a program you run on your own computer or server. It starts AI assistants such as Claude Code to do work, watches them, and tells you when they need you, in a web page, on your phone, or in Signal, Telegram, Slack and other chat apps.
It began as a way to answer an AI coding session from Signal or Telegram. It now also plans bigger jobs, remembers what happened, and shares the work across several machines.
- Start and watch AI work from your phone, the web, chat or a terminal
- Give it a goal: it breaks the goal into steps, does them and checks the results
- It remembers past work, so a new session starts with background
- Use one machine or many; the work is shared
- Your data stays on your machines, encrypted and behind a login
Current release: v9.106.0 (2026-11-07). Every worker pane, verification run and guardrail process now has a memory ceiling (a share of host memory, kept between a floor and a cap), so one runaway program can no longer take down the host. Full history: CHANGELOG.md. Older highlights: docs/release-highlights.md.
Recent changes, newest first:
- Unreleased: an Automaton keeps a change record and drafts its gate report, changelog entry, parity issue, tracker rows and registry row from it (
datawatch autonomous generated-artefacts,change-record,generated; REST/api/autonomous/generated-artefactsand/api/autonomous/prds/{id}/change-record; MCPgenerated_artefacts_get,autonomous_prd_change_record,autonomous_prd_generated_artefact,autonomous_prd_regenerate_artefact; Settings group "Generated artefacts") - v9.62: a check keeps machine names and addresses out of the code and docs
- v9.61: a limit keeps weekly Claude usage on budget
- v9.60: the steps of one job can run at the same time
- v9.58: each project sets its own merge steps, plus a setup report
- v9.57: stuck Claude Code prompts are dismissed safely
- v9.50 to v9.55: automatic retries, held work asks you a question, a watch tells slow from hung
A chat bot answers one message at a time. datawatch keeps running: it starts the work, keeps track of it, and reports back.
The same setup works whether the work runs on your laptop, in a container, on another machine, or on a schedule, and you control it the same way from everywhere. One way to set it up, one place to look.
A map of every part is in docs/architecture-overview.md.
Give it a goal. It splits the goal into steps, runs them, checks each result, and asks you when a decision is yours.
- Breaks a goal into steps and checks each result against the code changes
- Runs steps at the same time when it is safe
- Stops to ask you instead of guessing
- Warns you about failed work and about finished work that has not been merged
- Lines queued work up by kind (bug, maintenance, feature, other) with a visible priority source, and offers new defect filings to the Automation you name
- Points the planner and workers at your project's rules and context files; set the file names under Settings, Rules and context, with
datawatch autonomous rules-context, or withGET/PUT /api/autonomous/rules-context(how-to)
More: automation API · planning routing · parallel steps · questions · priority by kind + defect intake
Agent tracing records each tool call, model request, state change and permission decision as a timeline you can read per session or per Automaton.
- Reads one session or a whole Automaton in order, with filters for tool, backend and errors
- Rolls up time, errors and tokens by session, task, story, agent or backend
- Shows how much of each backend's activity the trace captures
- Off, summary (default) or full mode under
tracing.*in the config
More: how-to · configuration · MCP tools
-
Add any computer, GPU machine or cluster as a place to run models
-
Name a model and list backups for when a machine is busy
-
Browse models that fit your hardware
-
Drain a machine for maintenance so it takes no new work while running work finishes (
datawatch compute node drainandundrain) -
Can read a judge's answer as option probabilities instead of parsing prose (classify mode), and blocks rather than guesses when the numbers are missing
-
datawatch llm classifier status|publishers|add-publisher|verdicts|reviewshows what the judge is allowed to do and why a verdict came out as it did; a model's publisher must be on the allowlist you maintain -
See what the automations need against what is configured — the requirements report (
datawatch automation requirements-report) says what is missing and which backend minimums each node meets, fails or cannot verify -
Decide which models may be pulled before anything is pulled — the model-pull consent gate is default-deny (
datawatch automation model-consent get|set), with per-model allow/deny notes and publisher allow-lists
More: compute nodes · model list · classification verdicts · requirements report · model pull consent
- Remembers past sessions and facts, and you can search them
- Keeps private notes apart from notes shared with other machines
- A new session starts with who you are and the background it needs
More: memory · shared notes
- Connect machines and share work, sessions, files and chat messages
- Each machine gets only the access you give it
More: channel routing · file sharing
- Data on disk is encrypted
- Passwords and keys live in a vault
- Logins, encrypted connections, and a log of who did what
More: encryption · security review
- Plugins and skills, including a community collection
- Works with Claude Desktop, Cursor and VS Code
- Claude Code reports its status automatically
More: skills · MCP · Claude Code hooks
- Chat apps: Signal, Telegram, Discord, Slack, Matrix, Twilio, webhooks, DNS and voice
- AI tools: claude-code, aider, pi, goose, gemini, opencode, ollama, openwebui and shell
- Docker and Kubernetes workers
- Agent tracing: a timeline of what each agent did (tool calls, model requests, permission decisions, loop warnings, errors) for a session or a whole Automaton, with roll-ups and a per-backend coverage badge. On by default at the summary level; settings under
tracing.*(how-to) - Rate-limit recovery, network monitoring, Prometheus metrics and a Tailscale network
Everything else is in the Documentation index.
curl -fsSL https://raw.githubusercontent.com/dmz006/datawatch/main/install/install.sh | bashInstalls to ~/.local/bin for non-root users, /usr/local/bin for root. Includes systemd service.
git clone https://github.com/dmz006/datawatch
cd datawatch
go build -o bin/datawatch ./cmd/datawatch
sudo mv bin/datawatch /usr/local/bin/datawatch update && datawatch restartUpdate is version-string aware. Tmux sessions survive daemon restarts.
Three stages, each one a complete, working state on its own — stop after stage 2 if that's all you need today.
See Installation above, then initialize + start:
datawatch config init
datawatch start
curl -ks https://localhost:8443/api/health # {"status":"ok",...}The fastest path from a fresh install to a real AI session: no messaging backend, no LLM registry, no MCP server required yet. Pick whichever coding CLI you already have on your machine — opencode or Claude Code:
# opencode
datawatch config set llm.backends.opencode.enabled true
datawatch config set llm.backends.opencode.path "$(which opencode)"
# — or — claude-code
datawatch config set llm.backends.claude_code.enabled true
datawatch config set llm.backends.claude_code.path "$(which claude)"
datawatch reload
datawatch backends list
# → opencode | claude-code ENABLED reachable
datawatch sessions start --llm opencode --task "Hello, what model are you?" --project-dir /tmp
# (swap --llm claude-code if that's the one you configured)Open https://localhost:8443 in a browser to watch the session stream
live, or datawatch sessions tail <id> from the CLI. This is a
complete, working datawatch install — everything past this point is
additive.
Layer on the rest once the minimal path works:
# Configure your operator identity
datawatch identity configure
# or open the PWA and click the 🤖 robot icon in the header
# Register more backends/hardware in the LLM Registry (ordered
# failover list, not just the one backend from stage 2)
datawatch llm list
datawatch compute node list
datawatch compute pull-model datawatch-ollama llama3.1:8b
datawatch sessions start --llm ollama --model llama3.1:8b --task "Hello"
# Point an MCP host (Claude Desktop / Cursor / VS Code — or a
# datawatch-spawned claude-code/opencode session from stage 2, which
# already has this same MCP server wired in) at the daemon:
# {"datawatch": {"command": "datawatch", "args": ["mcp"], "env": {"DATAWATCH_TOKEN": "<bearer>"}}}
# (Optional) add a messaging backend
datawatch setup telegram # or discord / slack / signalOnce that MCP host is connected, it can configure datawatch through plain prompts instead of CLI flags or hand-edited YAML — including finding out what to do first. Example, verbatim:
You: "What's configured and what isn't? Set up something that's missing."
Claude: calls
alert_rule_list,compute_node_list,federation_peer_list— sees two compute nodes and a federation peer, but zero alert rules. Callsdocs_search("alert rule")to confirm the schema, thenalert_rule_createto add one (e.g. GPU usage on your RTX node above 90%, cooldown 5 minutes). No restart needed.
Same pattern for anything else: ask what's there, let it read the docs it needs, let it call the tool. See docs/howto/setup-and-install.md's MCP section for the fuller prompt → tool-call reference.
Send help in a configured messaging channel to see the command
reference, or see
docs/howto/setup-and-install.md for
the full walkthrough of all three stages, and
docs/howto/chat-and-llm-quickstart.md
for the most-common chat × backend pairings.
Every datawatch feature is reachable from all of these surfaces:
| Surface | Example |
|---|---|
| REST | curl https://localhost:8443/api/llms |
| MCP | llm_list / compute_node_list (via Claude Code / Cursor / VS Code) |
| CLI | datawatch llm list / datawatch compute node list |
| Comm | llm list / compute node list (sent in Signal / Telegram / Matrix / etc.) |
| PWA | Settings → Compute → LLM Configuration / Compute Nodes |
| Mobile | Mirrored via Compose Multiplatform app (dmz006/datawatch-app) |
| YAML | ~/.datawatch/datawatch.yaml compute: + llm: blocks |
The mobile parity rule: every operator-visible PWA change files an issue against dmz006/datawatch-app so the Compose pipeline mirrors it.
See docs/commands.md for the full command reference.
➡ docs/architecture-overview.md — one-screen Mermaid diagram of every interface, subsystem, and data path, with planned features called out.
For deeper drill-downs: docs/architecture.md (package list, component diagram, session state machine) · docs/data-flow.md (per-feature sequence diagrams) · docs/plans/README.md (open and planned features tracker).
datawatch is now on your wrist, dashboard, and pocket. Compose Multiplatform with full 7-surface parity across Android, Android Auto, and Wear OS — same capabilities, native to each form factor.
- Android Auto — hands-free voice commands via "Hey Google, ask DataWatch for status," live session/vitals monitoring on the infotainment display, quick-decision buttons, urgent push notifications. Three distraction-safe screens.
- Wear OS — Automata queue dashboard, private local voice (audio goes straight to your own server, transcribed by your own Whisper instance — no Google, no cloud STT), tile shortcuts, ambient progress, health-data cross-reference.
- Android phone — full session and Automata orchestration parity with desktop (REST/MCP/CLI), discussion scopes, file uploads, offline queue with auto-sync, bidirectional push replies.
Android is in Google Play closed testing, currently pending Google's app review. Google requires 12 testers opted in for 14 continuous days before production access. The opt-in/install links below may not load the app yet if the review hasn't cleared — if a link 404s or shows nothing to install, the app isn't visible to new testers yet; try again later or watch
dmz006/datawatch-app's CHANGELOG for the review-cleared announcement.
- Join the tester group with the same Google account your phone uses for Play
- Opt in on Google Play
- Install from Google Play (the listing appears after you opt in, once Google's review clears) and stay opted in for 14 days — we need 12 testers.
Wear OS is in the same closed test. Once you've opted in, open Play Store on the watch and search datawatch, or install it from play.google.com in a browser and pick the watch. Android Auto is part of the phone app.
iOS: public TestFlight beta — install TestFlight from the App Store, open the link on your iPhone/iPad, tap Accept, then Install. Feedback: open an issue in
dmz006/datawatch-app.
dmz006/datawatch-community is the official hub for sharing datawatch Skills and Plugins — autonomous session patterns, multi-agent topologies, inter-agent proposal pipelines, and more, contributed by operators and installable in one command:
datawatch skills registry connect https://github.com/dmz006/datawatch-community
datawatch skills sync communityBrowse the catalog in-app (Settings → Skills → Registry) or on GitHub. To contribute: fork, add your Skill or Plugin directory, open a PR — see CONTRIBUTING.md.
Full documentation lives in docs/ — see docs/README.md for a complete index with all flow diagrams.
| Dependency | Version | Notes |
|---|---|---|
| signal-cli | ≥ 0.13 | Optional — Signal protocol bridge |
| Java | ≥ 17 | Optional — required by signal-cli |
| tmux | Any recent | Session management |
| ollama | Any recent | Optional — local LLM inference |
| claude CLI | Latest | Optional — claude-code backend |
| Tailscale | Any | Optional — for PWA + mesh |
| Go | 1.24+ | Only required for building from source |
Polyform Noncommercial 1.0.0. See LICENSE.
Commercial licensing inquiries: open an issue.
Special thanks to Daniel Keys Moran and his novel The Long Run — the story of Trent the Uncatchable, a thief and hacker operating under the eye of an all-seeing AI surveillance network, sparked a decades-long obsession with the intersection of technology, autonomy, and the systems that watch over us. That spirit lives somewhere in this project.
"The DataWatch sees everything."
If you haven't read it: buy it on Amazon (Kindle edition also available), or borrow it from the Internet Archive. Daniel has also historically offered copies by email request via his blog.
Datawatch's design also borrows heavily from three projects, with full attribution in docs/plan-attribution.md:
- HackingDave/nightwire — Signal-driven AI coding bot. Episodic memory + Signal-as-control-plane shape.
- milla-jovovich/mempalace — Memory palace metaphor, 4-layer wake-up stack, full 6-axis spatial schema, conversation mining, repair self-check.
- danielmiessler/Personal_AI_Infrastructure (PAI) — Identity / Telos, Algorithm Mode 7-phase, Skills, Evals, Council, ISA generalization.
Issues + PRs welcome. Read AGENT.md for the operating rules — every commit follows the documented Pre-Execution / Versioning / Documentation / Mobile-Parity / Secrets-Store rules.