Skip to content

Commit ff403ee

Browse files
eddimanclaude
andcommitted
feat: bump to 0.2.0 — rewrite README, scope release to core package
- Rewrite README with dual-backend support, web dashboard, monorepo structure, and docs site link - Bump VERSION and pyproject.toml from 0.1.0 to 0.2.0 - Scope release tarball to core adjutant package only (exclude web/, site/, integrations/, reference docs) - Update release body to mention both OpenCode and Claude Code CLI Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 4c2e09e commit ff403ee

4 files changed

Lines changed: 100 additions & 95 deletions

File tree

.github/workflows/release.yml

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@ jobs:
1717
- name: Checkout
1818
uses: actions/checkout@v4
1919
with:
20-
# Fetch full history so VERSION and tags are available
2120
fetch-depth: 0
2221

2322
- name: Read version from tag
2423
id: version
2524
run: |
2625
TAG="${GITHUB_REF_NAME}"
27-
# Strip leading 'v' for the tarball name (v1.0.0 → 1.0.0)
2826
VERSION="${TAG#v}"
2927
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
3028
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
@@ -47,14 +45,19 @@ jobs:
4745
TARBALL="${{ steps.version.outputs.tarball }}"
4846
STAGING="adjutant-${TAG}"
4947
50-
# Create staging directory with framework files only
51-
# Excludes: user-specific data, personal identity, journals,
52-
# CI artifacts, evaluation docs, and development-only files
5348
mkdir -p "${STAGING}"
5449
50+
# Include only the core adjutant package and essential files.
51+
# Excludes: web dashboard, docs site, personal data, CI artifacts.
5552
rsync -a \
5653
--exclude='.git/' \
5754
--exclude='.github/' \
55+
--exclude='web/' \
56+
--exclude='site/' \
57+
--exclude='integrations/' \
58+
--exclude='docs/reference/' \
59+
--exclude='docs/web/' \
60+
--exclude='docs/plans/' \
5861
--exclude='adjutant.yaml' \
5962
--exclude='identity/soul.md' \
6063
--exclude='identity/heart.md' \
@@ -68,15 +71,15 @@ jobs:
6871
--exclude='screenshots/' \
6972
--exclude='.env' \
7073
--exclude='PAUSED' \
71-
--exclude='docs/evaluation/' \
7274
--exclude='opencode.json' \
75+
--exclude='.claude/' \
7376
--exclude='tmp/' \
77+
--exclude='memory/' \
7478
. "${STAGING}/"
7579
7680
tar -czf "${TARBALL}" "${STAGING}/"
7781
echo "Built ${TARBALL} ($(du -sh "${TARBALL}" | cut -f1))"
7882
79-
# Generate SHA256 checksum for integrity verification
8083
sha256sum "${TARBALL}" > "${TARBALL}.sha256"
8184
echo "Checksum: $(cat "${TARBALL}.sha256")"
8285
@@ -109,15 +112,15 @@ jobs:
109112
110113
## What's included
111114
112-
This release contains the Adjutant framework — Python source, setup wizard, templates, and tests.
113-
It does **not** include any personal identity files, journals, or configuration.
115+
This release contains the Adjutant framework — Python source, setup wizard, templates, prompts, docs, and tests.
116+
It does **not** include the web dashboard, docs site, personal identity files, journals, or configuration.
114117
The setup wizard will create those for you.
115118
116119
## Requirements
117120
118121
- Python 3.11+
119-
- [opencode](https://opencode.ai)
120-
- Telegram bot token (optional — CLI-only mode supported)
122+
- [OpenCode](https://opencode.ai) or [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)
123+
- Telegram bot token
121124
122125
See [README](https://github.com/${{ github.repository }}#readme) for full documentation.
123126
files: |

README.md

Lines changed: 84 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,129 @@
11
# Adjutant
22

3-
A persistent personal agent that runs on your machine and stays in contact with you through Telegram. You send it messages — questions, commands, requests — and it responds using an LLM with full awareness of your projects and priorities.
3+
A persistent personal AI agent framework that runs on your machine and communicates through Telegram. Send messages, commands, and photos — Adjutant responds using LLM-powered reasoning with full awareness of your projects and knowledge bases.
44

5-
**Version**: 2.0.0
5+
Supports two LLM backends: [OpenCode](https://opencode.ai) and [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code), switchable via configuration.
66

77
## What It Does
88

9-
- Responds to natural language queries via Telegram
10-
- Queries domain-specific knowledge bases via isolated sub-agents
11-
- Runs on-demand pulse checks (`/pulse`) and deep reflections (`/reflect`)
12-
- Takes screenshots, analyzes images, and searches the web
13-
- Stays quiet by default — no background jobs run unless you configure them
14-
15-
Adjutant is **on-demand, not autonomous**. It responds when you message it. Proactive behaviour (project scanning, notifications) only happens when you trigger `/pulse` or `/reflect`, or if you set up a cron job yourself.
9+
- **Conversational AI** — natural language via Telegram, routed through OpenCode or Claude Code CLI
10+
- **Knowledge bases** — sandboxed sub-agent workspaces for domain-specific knowledge
11+
- **Scheduled jobs** — cron-based tasks that run autonomously and notify you of results
12+
- **Autonomous cycles** — periodic pulse and review operations with configurable notification budgets
13+
- **Long-term memory** — structured memory system that persists across conversations
14+
- **News briefings** — aggregated, LLM-ranked news from Hacker News, Reddit, and RSS
15+
- **Screenshots & vision** — capture and analyze web pages or images (OpenCode backend)
16+
- **Web search** — Brave Search API integration
17+
- **Web dashboard** — canvas-based KB explorer and operational dashboard
1618

1719
## Quick Start
1820

19-
Adjutant can be installed anywhere — there is no hardcoded path.
20-
2121
```bash
22-
git clone https://github.com/eddiman/adjutant.git /path/to/adjutant
23-
cd /path/to/adjutant
22+
git clone https://github.com/eddiman/adjutant.git
23+
cd adjutant
2424
python3 -m venv .venv
2525
.venv/bin/pip install -e .
2626
.venv/bin/adjutant setup
2727
```
2828

29-
The setup wizard checks prerequisites, asks where Adjutant lives, prompts for your Telegram credentials, and sets up identity files.
29+
The setup wizard checks prerequisites, configures your LLM backend, prompts for Telegram credentials, and sets up identity files.
3030

31-
**Requirements**: Python 3.11+, [opencode](https://opencode.ai), Telegram bot token
31+
**Requirements**: Python 3.11+, [OpenCode](https://opencode.ai) or [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code), Telegram bot token
3232

33-
---
33+
## Backends
3434

35-
## Starting & Stopping
35+
| | OpenCode | Claude Code CLI |
36+
|---|---|---|
37+
| Auth | Anthropic API key | Claude Pro/Team/Enterprise subscription |
38+
| Vision | Yes | No |
39+
| Cost tracking | No | Yes |
40+
| Model listing | Yes | No |
41+
| Permission modes | N/A | skip / allowlist |
3642

37-
```bash
38-
adjutant start # Start the Telegram listener
39-
adjutant stop # Stop the Telegram listener
40-
adjutant restart # Stop all services and start fresh
41-
adjutant startup # Full startup / recovery from KILLED state
42-
adjutant pause # Soft pause — listener stays up, stops processing
43-
adjutant resume # Resume from pause
44-
adjutant kill # Emergency shutdown — kills all processes, sets KILLED lockfile
45-
```
43+
Switch backends by editing `adjutant.yaml`:
4644

47-
After `adjutant kill`, run `adjutant startup` to recover.
45+
```yaml
46+
llm:
47+
backend: "opencode" # or "claude-cli"
48+
```
4849
49-
## Directory Structure
50+
## Lifecycle
5051
51-
```
52-
$ADJ_DIR/ # Install directory (set by adjutant.yaml)
53-
├── .opencode/
54-
│ └── agents/
55-
│ └── adjutant.md # Agent definition (tracked)
56-
├── adjutant # CLI shim
57-
├── adjutant.yaml # Root marker + unified config (gitignored)
58-
├── opencode.json # Workspace permissions
59-
├── .env # Secrets (gitignored)
60-
├── identity/ # Identity files (gitignored)
61-
│ ├── soul.md # Identity, values, decision frameworks
62-
│ ├── heart.md # Current priorities
63-
│ └── registry.md # Registered projects to monitor
64-
├── knowledge_bases/
65-
│ └── registry.yaml # Registered knowledge bases (gitignored)
66-
├── templates/kb/ # KB scaffold templates (tracked)
67-
├── prompts/ # Pulse/review/escalation prompts (tracked)
68-
├── src/adjutant/ # Python source
69-
├── journal/ # Daily entries (gitignored)
70-
├── insights/ # Generated insights (gitignored)
71-
└── state/ # Runtime state (gitignored)
52+
```bash
53+
adjutant start # Start the Telegram listener
54+
adjutant stop # Stop the Telegram listener
55+
adjutant restart # Restart all services
56+
adjutant pause # Soft pause — listener stays up, stops processing
57+
adjutant resume # Resume from pause
58+
adjutant kill # Emergency shutdown
59+
adjutant startup # Recovery from KILLED state
60+
adjutant status # Show current state
61+
adjutant doctor # Health check
7262
```
7363

7464
## Telegram Commands
7565

7666
| Command | What it does |
7767
|---------|-------------|
7868
| `/status` | Current state, scheduled jobs, last autonomous cycle |
79-
| `/pause` | Soft pause — stops processing without killing the listener |
80-
| `/resume` | Resume from pause |
81-
| `/pulse` | Quick project scan |
82-
| `/restart` | Restart all services |
83-
| `/screenshot <url>` | Take full-page screenshot |
69+
| `/pulse` | Quick project scan across all KBs |
8470
| `/reflect` | Deep reflection (requires `/confirm`) |
8571
| `/model` | Show or switch the active model |
86-
| `/kb` | List knowledge bases |
87-
| `/kb query <name> <question>` | Query a knowledge base |
72+
| `/models` | List available models |
73+
| `/kb list` | List knowledge bases |
74+
| `/kb <name> <question>` | Query a knowledge base |
8875
| `/search <query>` | Web search via Brave API |
76+
| `/screenshot <url>` | Take a full-page screenshot |
77+
| `/remember <text>` | Store a memory entry |
78+
| `/memory [query]` | Search or show memory index |
79+
| `/news` | Run news briefing |
80+
| `/schedule list` | List scheduled jobs |
81+
| `/pause` / `/resume` | Pause/resume processing |
8982
| `/help` | List all commands |
9083

91-
Any other message is treated as natural language.
84+
Any other message is treated as natural language and routed to the LLM backend.
9285

9386
## CLI Reference
9487

9588
| Command | What it does |
9689
|---------|-------------|
97-
| `adjutant startup` | Full startup / recovery from KILLED state |
90+
| `adjutant setup` | Interactive setup wizard |
9891
| `adjutant start` / `stop` / `restart` | Manage the Telegram listener |
9992
| `adjutant pause` / `resume` / `kill` | Lifecycle control |
100-
| `adjutant status` | Show current status |
93+
| `adjutant startup` | Full startup / recovery |
94+
| `adjutant status` / `adjutant doctor` | Status and health checks |
10195
| `adjutant logs` | Tail the listener log |
102-
| `adjutant doctor` | Check health and dependencies |
103-
| `adjutant notify "msg"` | Send a Telegram notification (respects daily budget) |
104-
| `adjutant reply "msg"` | Send a Telegram reply (Markdown, no budget cap) |
105-
| `adjutant screenshot <url>` | Take and send a full-page screenshot |
106-
| `adjutant search "query"` | Web search via Brave API |
107-
| `adjutant news` | Run the news briefing manually |
108-
| `adjutant rotate` | Archive old journal entries and rotate logs |
109-
| `adjutant update` | Self-update to the latest release |
110-
| `adjutant setup` | Interactive setup wizard |
111-
| `adjutant kb list` | List registered knowledge bases |
112-
| `adjutant kb create` | Create a new knowledge base (interactive wizard) |
113-
| `adjutant kb query <name> "q"` | Query a knowledge base |
114-
| `adjutant kb run <name> <op>` | Run a KB-local operation |
115-
| `adjutant kb remove <name>` | Unregister a knowledge base |
116-
| `adjutant kb info <name>` | Show details about a knowledge base |
117-
| `adjutant schedule list` | List all scheduled jobs |
118-
| `adjutant schedule add` | Register a new scheduled job |
119-
| `adjutant schedule enable/disable <name>` | Toggle a job |
120-
| `adjutant schedule run <name>` | Run a job immediately |
96+
| `adjutant notify "msg"` | Send notification (respects daily budget) |
97+
| `adjutant reply "msg"` | Send reply (Markdown, no budget cap) |
98+
| `adjutant screenshot <url>` | Take and send a screenshot |
99+
| `adjutant search "query"` | Web search |
100+
| `adjutant news` | Run news briefing |
101+
| `adjutant rotate` | Archive old journals and rotate logs |
102+
| `adjutant update` | Self-update to latest release |
103+
| `adjutant kb list/create/query/run/remove/info` | Knowledge base management |
104+
| `adjutant schedule list/add/enable/disable/run` | Schedule management |
105+
| `adjutant memory remember/forget/recall/digest/status` | Memory management |
106+
107+
## Monorepo Structure
108+
109+
```
110+
adjutant/
111+
├── src/adjutant/ # Core Python package
112+
├── web/ # Web dashboard (Express + React)
113+
├── site/ # Documentation site (Docusaurus)
114+
├── docs/ # Documentation source
115+
└── .github/workflows/ # CI/CD (release, docs deploy)
116+
```
117+
118+
## Documentation
119+
120+
Full docs at [eddiman.github.io/adjutant](https://eddiman.github.io/adjutant/) — or browse `docs/` locally:
121+
122+
- [Getting Started](docs/getting-started/installation.md)
123+
- [Commands](docs/guides/commands.md)
124+
- [Backends](docs/guides/backends.md)
125+
- [Knowledge Bases](docs/guides/knowledge-bases.md)
126+
- [Architecture](docs/architecture/overview.md)
121127

122128
## Philosophy
123129

@@ -127,10 +133,6 @@ Any other message is treated as natural language.
127133
- **No surprises** — surface things before they become emergencies
128134
- **Install anywhere** — no hardcoded paths; everything resolves from `adjutant.yaml`
129135

130-
## Documentation
131-
132-
Full docs in `docs/` — start with [Getting Started](docs/guides/getting-started.md).
133-
134136
## License
135137

136138
MIT — see [LICENSE](LICENSE) for details.

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.1.0
1+
0.2.0

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
66

77
[project]
88
name = "adjutant"
9-
version = "0.1.0"
9+
version = "0.2.0"
1010
requires-python = ">=3.11"
1111

1212
dependencies = [

0 commit comments

Comments
 (0)