Tiny local CLI for coding-agent continuity.
Project description
Agent Watchtower Core
Languages: English | Simplified Chinese
Close the terminal, come back later, and your agent still knows where to resume.
You use Codex, Claude Code, Hermes, CodeWhale, or another coding agent for a few hours. Then the terminal closes, the session gets interrupted, or the next window starts cold.
Agent Watchtower keeps the small local trail that matters, so the next session can continue instead of starting over:
- what the goal is
- what the next safe action is
- where the last artifact is
It is for people who have felt this pain:
"My AI agent was working, then it stopped. Now I don't know what it finished, what it planned next, or where the useful output is."
It stores plain local files:
goals.jsonwork-queue.jsonrun-receipts.jsonwork-artifacts/*.md
In one sentence: Agent Watchtower is a tiny local CLI that lets coding agents leave behind goals, next actions, run receipts, and artifacts so interrupted work can resume without rebuilding context from chat.
Quick Demo
ROOT="$(mktemp -d)"
agent-watchtower --root "$ROOT" init
agent-watchtower --root "$ROOT" worker-status
agent-watchtower --root "$ROOT" worker-run
agent-watchtower --root "$ROOT" artifact-path
You should see one runnable task, one completed worker run, and one markdown artifact path.
Close the terminal. Come back later. The local Watchtower files still say what happened and where the next session should resume.
For a clearer before/after story, see docs/interrupted-recovery-demo.md.
Two Readers
There are two different readers:
- Humans read this
README.mdto understand what the tool does and how to try it. - Coding agents read
AGENTS.mdto learn exactly when and how to call the five public commands.
The README explains the value. AGENTS.md explains the operating rules.
Website
- English: http://www.adgwmuren.top/
- Chinese: http://www.adgwmuren.top/zh-CN.html
HTTPS is pending on GitHub Pages while the certificate is being issued.
Install
Requirements:
- Python 3.11+
- A writable local runtime directory
- No background service, external account, or network dependency
Supported Systems
Agent Watchtower is a plain Python CLI that stores local JSON and markdown files.
- macOS: tested in the current release flow.
- Linux: supported target with Python 3.11+.
- Windows: supported target with Python 3.11+; use
pip,pipx, oruvinstead of Homebrew.
From PyPI
python3 -m pip install agent-watchtower-core
Homebrew
brew tap un-n-smith/tap
brew install agent-watchtower
From GitHub
python3 -m pip install "agent-watchtower-core @ git+https://github.com/un-n-smith/agent-watchtower.git"
Pipx And Uv
For isolated CLI installs, pipx is also clean:
pipx install agent-watchtower-core
Or with uv:
uv tool install agent-watchtower-core
From A Local Checkout
python3 -m pip install .
After install, the CLI is:
agent-watchtower --help
For development without installing:
PYTHONPATH=src python3 -m agent_watchtower.cli --help
Run a local demo
For the default local runtime:
agent-watchtower init
agent-watchtower worker-status
agent-watchtower worker-run
agent-watchtower artifact-path
For a disposable demo runtime:
ROOT="$(mktemp -d)"
agent-watchtower --root "$ROOT" init
agent-watchtower --root "$ROOT" worker-status
agent-watchtower --root "$ROOT" worker-run
agent-watchtower --root "$ROOT" artifact-path
What to look for:
worker-statusshows whether one task is runnable.worker-runwrites one markdown artifact and records one run receipt.artifact-pathprints the latest artifact path.run-receipts.jsonrecords the completed bounded step and next safe action.
After this, close the terminal and come back later. The point is that the local files still say what happened and where to resume.
If you want a stricter release check, run:
./scripts/release_preflight.sh
For a scripted interruption demo from a source checkout, run:
./scripts/demo_interrupted_recovery.sh
Commands
Only these commands are part of v0:
init
task-add
worker-status
worker-run
artifact-path
Runtime
By default, data is stored under:
~/.agent-watchtower
Use --root <dir> for tests, demos, or project-local state.
For install, acceptance, and cleanup notes, see PACKAGING.md.
Feedback
This is an alpha project. Real interrupted-agent stories are more useful than abstract feature requests.
Please open an issue if:
- your agent lost track of work and Watchtower helped
- your agent could not understand the Watchtower state
- the install or quick demo failed
- you found a clearer way to explain this problem
User feedback is the main way this project gets better.
Uninstall
python3 -m pip uninstall agent-watchtower-core
To remove local runtime data:
rm -rf ~/.agent-watchtower
Boundaries
v0 is only a local continuity layer. It does not run a background service, create accounts, call external APIs, or claim to finish complex projects by itself.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_watchtower_core-0.1.3.tar.gz.
File metadata
- Download URL: agent_watchtower_core-0.1.3.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e52ba858b984e7df5044f4f29ed6d16624d004a904cd6bd05b725412095821f
|
|
| MD5 |
f7890ca23f04b7e257e7e1dcb380ae1a
|
|
| BLAKE2b-256 |
74a2e0d900ee8c9a3c080a5833d39ec125c52f4d78f29007eb2adbac2eb70dd1
|
File details
Details for the file agent_watchtower_core-0.1.3-py3-none-any.whl.
File metadata
- Download URL: agent_watchtower_core-0.1.3-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2dfac578f85e8b7237c02703427b3ece84b5763941c225a9028d62973220be34
|
|
| MD5 |
6abe0c32f3edbf9d9b6031f5d7d5d848
|
|
| BLAKE2b-256 |
c96b7f326f01fec93ec0e67b7b92e7f2de1fd2393b4a1fe5629a0474167b8d8a
|