honcho-cli 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- honcho_cli-0.1.0/.gitignore +195 -0
- honcho_cli-0.1.0/PKG-INFO +235 -0
- honcho_cli-0.1.0/README.md +211 -0
- honcho_cli-0.1.0/pyproject.toml +53 -0
- honcho_cli-0.1.0/src/honcho_cli/__init__.py +3 -0
- honcho_cli-0.1.0/src/honcho_cli/_help.py +130 -0
- honcho_cli-0.1.0/src/honcho_cli/branding.py +17 -0
- honcho_cli-0.1.0/src/honcho_cli/commands/__init__.py +0 -0
- honcho_cli-0.1.0/src/honcho_cli/commands/conclusion.py +219 -0
- honcho_cli-0.1.0/src/honcho_cli/commands/config_cmd.py +31 -0
- honcho_cli-0.1.0/src/honcho_cli/commands/message.py +161 -0
- honcho_cli-0.1.0/src/honcho_cli/commands/peer.py +308 -0
- honcho_cli-0.1.0/src/honcho_cli/commands/session.py +404 -0
- honcho_cli-0.1.0/src/honcho_cli/commands/setup.py +287 -0
- honcho_cli-0.1.0/src/honcho_cli/commands/workspace.py +322 -0
- honcho_cli-0.1.0/src/honcho_cli/common.py +112 -0
- honcho_cli-0.1.0/src/honcho_cli/config.py +150 -0
- honcho_cli-0.1.0/src/honcho_cli/main.py +96 -0
- honcho_cli-0.1.0/src/honcho_cli/output.py +104 -0
- honcho_cli-0.1.0/src/honcho_cli/skills/CONTEXT.md +50 -0
- honcho_cli-0.1.0/src/honcho_cli/skills/honcho-debug.md +54 -0
- honcho_cli-0.1.0/src/honcho_cli/skills/honcho-inspect.md +53 -0
- honcho_cli-0.1.0/src/honcho_cli/validation.py +44 -0
- honcho_cli-0.1.0/tests/__init__.py +0 -0
- honcho_cli-0.1.0/tests/test_commands.py +195 -0
- honcho_cli-0.1.0/tests/test_config.py +113 -0
- honcho_cli-0.1.0/tests/test_validation.py +57 -0
- honcho_cli-0.1.0/uv.lock +407 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
.worktrees/
|
|
2
|
+
api/**/*.db
|
|
3
|
+
api/data
|
|
4
|
+
api/docker-compose.yml
|
|
5
|
+
|
|
6
|
+
*.db
|
|
7
|
+
data
|
|
8
|
+
redis-data
|
|
9
|
+
docker-compose.yml
|
|
10
|
+
compose.yml
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# Byte-compiled / optimized / DLL files
|
|
15
|
+
__pycache__/
|
|
16
|
+
*.py[cod]
|
|
17
|
+
*$py.class
|
|
18
|
+
|
|
19
|
+
# C extensions
|
|
20
|
+
*.so
|
|
21
|
+
|
|
22
|
+
# Distribution / packaging
|
|
23
|
+
.Python
|
|
24
|
+
build/
|
|
25
|
+
develop-eggs/
|
|
26
|
+
dist/
|
|
27
|
+
downloads/
|
|
28
|
+
eggs/
|
|
29
|
+
.eggs/
|
|
30
|
+
lib/
|
|
31
|
+
lib64/
|
|
32
|
+
parts/
|
|
33
|
+
sdist/
|
|
34
|
+
var/
|
|
35
|
+
wheels/
|
|
36
|
+
share/python-wheels/
|
|
37
|
+
*.egg-info/
|
|
38
|
+
.installed.cfg
|
|
39
|
+
*.egg
|
|
40
|
+
MANIFEST
|
|
41
|
+
|
|
42
|
+
# PyInstaller
|
|
43
|
+
# Usually these files are written by a python script from a template
|
|
44
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
45
|
+
*.manifest
|
|
46
|
+
*.spec
|
|
47
|
+
|
|
48
|
+
# Installer logs
|
|
49
|
+
pip-log.txt
|
|
50
|
+
pip-delete-this-directory.txt
|
|
51
|
+
|
|
52
|
+
# Unit test / coverage reports
|
|
53
|
+
htmlcov/
|
|
54
|
+
.tox/
|
|
55
|
+
.nox/
|
|
56
|
+
.coverage
|
|
57
|
+
.coverage.*
|
|
58
|
+
.cache
|
|
59
|
+
nosetests.xml
|
|
60
|
+
coverage.xml
|
|
61
|
+
*.cover
|
|
62
|
+
*.py,cover
|
|
63
|
+
.hypothesis/
|
|
64
|
+
.pytest_cache/
|
|
65
|
+
cover/
|
|
66
|
+
|
|
67
|
+
# Translations
|
|
68
|
+
*.mo
|
|
69
|
+
*.pot
|
|
70
|
+
|
|
71
|
+
# Django stuff:
|
|
72
|
+
*.log
|
|
73
|
+
local_settings.py
|
|
74
|
+
db.sqlite3
|
|
75
|
+
db.sqlite3-journal
|
|
76
|
+
*.sqlite
|
|
77
|
+
|
|
78
|
+
# Flask stuff:
|
|
79
|
+
instance/
|
|
80
|
+
.webassets-cache
|
|
81
|
+
|
|
82
|
+
# Scrapy stuff:
|
|
83
|
+
.scrapy
|
|
84
|
+
|
|
85
|
+
# Sphinx documentation
|
|
86
|
+
**/docs/_build/
|
|
87
|
+
|
|
88
|
+
# PyBuilder
|
|
89
|
+
.pybuilder/
|
|
90
|
+
target/
|
|
91
|
+
|
|
92
|
+
# Jupyter Notebook
|
|
93
|
+
.ipynb_checkpoints
|
|
94
|
+
|
|
95
|
+
# IPython
|
|
96
|
+
profile_default/
|
|
97
|
+
ipython_config.py
|
|
98
|
+
|
|
99
|
+
# pyenv
|
|
100
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
101
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
102
|
+
# .python-version
|
|
103
|
+
|
|
104
|
+
# pipenv
|
|
105
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
106
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
107
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
108
|
+
# install all needed dependencies.
|
|
109
|
+
#Pipfile.lock
|
|
110
|
+
|
|
111
|
+
# poetry
|
|
112
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
113
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
114
|
+
# commonly ignored for libraries.
|
|
115
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
116
|
+
#poetry.lock
|
|
117
|
+
|
|
118
|
+
# pdm
|
|
119
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
120
|
+
#pdm.lock
|
|
121
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
|
122
|
+
# in version control.
|
|
123
|
+
# https://pdm.fming.dev/#use-with-ide
|
|
124
|
+
.pdm.toml
|
|
125
|
+
|
|
126
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
127
|
+
__pypackages__/
|
|
128
|
+
|
|
129
|
+
# Celery stuff
|
|
130
|
+
celerybeat-schedule
|
|
131
|
+
celerybeat.pid
|
|
132
|
+
|
|
133
|
+
# SageMath parsed files
|
|
134
|
+
*.sage.py
|
|
135
|
+
|
|
136
|
+
# Environments
|
|
137
|
+
.env
|
|
138
|
+
.venv
|
|
139
|
+
env/
|
|
140
|
+
venv/
|
|
141
|
+
ENV/
|
|
142
|
+
env.bak/
|
|
143
|
+
venv.bak/
|
|
144
|
+
.env.backup*
|
|
145
|
+
|
|
146
|
+
# Spyder project settings
|
|
147
|
+
.spyderproject
|
|
148
|
+
.spyproject
|
|
149
|
+
|
|
150
|
+
# Rope project settings
|
|
151
|
+
.ropeproject
|
|
152
|
+
|
|
153
|
+
# mkdocs documentation
|
|
154
|
+
/site
|
|
155
|
+
|
|
156
|
+
# mypy
|
|
157
|
+
.mypy_cache/
|
|
158
|
+
.dmypy.json
|
|
159
|
+
dmypy.json
|
|
160
|
+
|
|
161
|
+
# Pyre type checker
|
|
162
|
+
.pyre/
|
|
163
|
+
|
|
164
|
+
# pytype static type analyzer
|
|
165
|
+
.pytype/
|
|
166
|
+
|
|
167
|
+
# Cython debug symbols
|
|
168
|
+
cython_debug/
|
|
169
|
+
|
|
170
|
+
# PyCharm
|
|
171
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
172
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
173
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
174
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
175
|
+
#.idea/
|
|
176
|
+
|
|
177
|
+
.DS_Store
|
|
178
|
+
|
|
179
|
+
supabase/
|
|
180
|
+
|
|
181
|
+
docs/node_modules
|
|
182
|
+
|
|
183
|
+
timing_logs.csv
|
|
184
|
+
|
|
185
|
+
config.json
|
|
186
|
+
config.toml
|
|
187
|
+
.aider*
|
|
188
|
+
|
|
189
|
+
CRUSH.md
|
|
190
|
+
.crush/
|
|
191
|
+
|
|
192
|
+
metrics.jsonl
|
|
193
|
+
AGENTS.md
|
|
194
|
+
lancedb_data/
|
|
195
|
+
grafana-data/
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: honcho-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A terminal for Honcho — memory that reasons.
|
|
5
|
+
Project-URL: Homepage, https://github.com/plastic-labs/honcho
|
|
6
|
+
Project-URL: Repository, https://github.com/plastic-labs/honcho
|
|
7
|
+
Author-email: Plastic Labs <hello@plasticlabs.ai>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
15
|
+
Requires-Python: >=3.11
|
|
16
|
+
Requires-Dist: honcho-ai>=2.0.0
|
|
17
|
+
Requires-Dist: httpx>=0.27.0
|
|
18
|
+
Requires-Dist: rich>=13.0.0
|
|
19
|
+
Requires-Dist: typer>=0.15.0
|
|
20
|
+
Provides-Extra: dev
|
|
21
|
+
Requires-Dist: pytest-mock>=3.14.0; extra == 'dev'
|
|
22
|
+
Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
██╗ ██╗ ██████╗ ███╗ ██╗ ██████╗██╗ ██╗ ██████╗
|
|
27
|
+
██║ ██║██╔═══██╗████╗ ██║██╔════╝██║ ██║██╔═══██╗
|
|
28
|
+
███████║██║ ██║██╔██╗ ██║██║ ███████║██║ ██║
|
|
29
|
+
██╔══██║██║ ██║██║╚██╗██║██║ ██╔══██║██║ ██║
|
|
30
|
+
██║ ██║╚██████╔╝██║ ╚████║╚██████╗██║ ██║╚██████╔╝
|
|
31
|
+
╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚═╝ ╚═╝ ╚═════╝
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
# honcho-cli
|
|
35
|
+
|
|
36
|
+
A terminal for [Honcho](https://honcho.dev) — memory that reasons.
|
|
37
|
+
|
|
38
|
+
## Install
|
|
39
|
+
|
|
40
|
+
As a standalone tool (recommended):
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
uv tool install honcho-cli
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
As an extra on the Honcho SDK (if you want both the SDK and the CLI in one project):
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
uv add honcho-ai[cli]
|
|
50
|
+
# or
|
|
51
|
+
pip install honcho-ai[cli]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Either way, you'll get the `honcho` command on your PATH.
|
|
55
|
+
|
|
56
|
+
## Quick Start
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
honcho init # confirm/set apiKey + Honcho URL in ~/.honcho/config.json
|
|
60
|
+
honcho doctor # verify your config + connectivity
|
|
61
|
+
honcho # show banner + command list
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`honcho init` reads `apiKey` and `environmentUrl` from the top-level of `~/.honcho/config.json` (the same file other Honcho tools — plugins, host integrations — share). If both are present, it confirms them with you; if either is missing (or you decline), it prompts for the missing value(s) and writes them back. Host-specific entries under `hosts` are left untouched.
|
|
65
|
+
|
|
66
|
+
Per-command scoping (workspace / peer / session) is handled via `-w` / `-p` / `-s` flags or `HONCHO_*` env vars — not persisted as CLI defaults.
|
|
67
|
+
|
|
68
|
+
## Commands
|
|
69
|
+
|
|
70
|
+
### Onboarding
|
|
71
|
+
|
|
72
|
+
| Command | Description |
|
|
73
|
+
|---------|-------------|
|
|
74
|
+
| `honcho init` | Confirm/set `apiKey` + `environmentUrl` in `~/.honcho/config.json` |
|
|
75
|
+
| `honcho doctor` | Health check: config, connectivity, workspace, peer, queue |
|
|
76
|
+
|
|
77
|
+
### Workspaces
|
|
78
|
+
|
|
79
|
+
| Command | Description |
|
|
80
|
+
|---------|-------------|
|
|
81
|
+
| `honcho workspace list` | List accessible workspaces |
|
|
82
|
+
| `honcho workspace create <id>` | Create or get a workspace |
|
|
83
|
+
| `honcho workspace inspect` | Peers, sessions, config for a workspace |
|
|
84
|
+
| `honcho workspace search <query>` | Search messages across workspace |
|
|
85
|
+
| `honcho workspace queue-status` | Deriver queue status (filter with `--observer` / `--sender`) |
|
|
86
|
+
| `honcho workspace delete <id>` | Delete a workspace. Use `--dry-run` to preview, `--cascade` to also delete sessions, `--yes` to skip the confirm prompt |
|
|
87
|
+
|
|
88
|
+
### Peers
|
|
89
|
+
|
|
90
|
+
| Command | Description |
|
|
91
|
+
|---------|-------------|
|
|
92
|
+
| `honcho peer list` | List peers in the workspace |
|
|
93
|
+
| `honcho peer create <id>` | Create or get a peer |
|
|
94
|
+
| `honcho peer inspect <id>` | Card, session count, recent conclusions |
|
|
95
|
+
| `honcho peer card <id>` | Raw peer card content |
|
|
96
|
+
| `honcho peer chat <query>` | Query the dialectic about a peer (peer via `-p` / `HONCHO_PEER_ID`) |
|
|
97
|
+
| `honcho peer representation <id>` | Formatted representation |
|
|
98
|
+
| `honcho peer search <query>` | Search a peer's messages (peer via `-p` / `HONCHO_PEER_ID`) |
|
|
99
|
+
| `honcho peer get-metadata <id>` / `set-metadata` | Metadata operations |
|
|
100
|
+
|
|
101
|
+
### Sessions
|
|
102
|
+
|
|
103
|
+
| Command | Description |
|
|
104
|
+
|---------|-------------|
|
|
105
|
+
| `honcho session list` | List sessions in the workspace (filter with `--peer/-p`) |
|
|
106
|
+
| `honcho session create <id>` | Create or get a session (optionally `--peers` to add peers, `--metadata`) |
|
|
107
|
+
| `honcho session inspect <id>` | Peers, message count, summaries, config |
|
|
108
|
+
| `honcho session context <id>` | What an agent would see |
|
|
109
|
+
| `honcho session summaries <id>` | Short + long summaries |
|
|
110
|
+
| `honcho session peers <id>` / `add-peers` / `remove-peers` | Peer management |
|
|
111
|
+
| `honcho session search <id> <query>` | Search messages in a session |
|
|
112
|
+
| `honcho session representation <id>` | Peer representation in a session |
|
|
113
|
+
| `honcho session get-metadata <id>` / `set-metadata` | Metadata operations |
|
|
114
|
+
| `honcho session delete <id>` | Destructive; requires `--yes` |
|
|
115
|
+
|
|
116
|
+
### Messages
|
|
117
|
+
|
|
118
|
+
| Command | Description |
|
|
119
|
+
|---------|-------------|
|
|
120
|
+
| `honcho message list` | List messages in a session (session via `-s` / `HONCHO_SESSION_ID`) |
|
|
121
|
+
| `honcho message create <content>` | Create a message (requires `--peer/-p`, session via `-s`) |
|
|
122
|
+
| `honcho message get <id>` | Get a single message (session via `-s` / `HONCHO_SESSION_ID`) |
|
|
123
|
+
|
|
124
|
+
### Conclusions (observations)
|
|
125
|
+
|
|
126
|
+
| Command | Description |
|
|
127
|
+
|---------|-------------|
|
|
128
|
+
| `honcho conclusion list` | List conclusions (filter with `--observer` / `--observed`) |
|
|
129
|
+
| `honcho conclusion search <query>` | Semantic search (filter with `--observer` / `--observed`) |
|
|
130
|
+
| `honcho conclusion create` | Create a conclusion |
|
|
131
|
+
| `honcho conclusion delete <id>` | Delete a conclusion |
|
|
132
|
+
|
|
133
|
+
### Config
|
|
134
|
+
|
|
135
|
+
| Command | Description |
|
|
136
|
+
|---------|-------------|
|
|
137
|
+
| `honcho config` | Show current config (API key redacted) |
|
|
138
|
+
|
|
139
|
+
## Agent Usage
|
|
140
|
+
|
|
141
|
+
All commands output JSON when stdout isn't a TTY, or when `--json` is forced.
|
|
142
|
+
Collection commands emit JSON arrays, and single-resource commands emit JSON objects:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
honcho peer list --json
|
|
146
|
+
honcho workspace inspect --json | jq '.peers'
|
|
147
|
+
honcho doctor --json # machine-parseable health checklist
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Errors are structured:
|
|
151
|
+
|
|
152
|
+
```json
|
|
153
|
+
{
|
|
154
|
+
"error": {
|
|
155
|
+
"code": "PEER_NOT_FOUND",
|
|
156
|
+
"message": "Peer 'abc' not found in workspace 'my-ws'",
|
|
157
|
+
"details": {"workspace_id": "my-ws", "peer_id": "abc"}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Non-interactive onboarding:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# Pre-seed via flags / env vars; init still prompts for anything missing
|
|
166
|
+
HONCHO_API_KEY=hch-v3-xxx honcho init --base-url https://api.honcho.dev
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Environment Variables
|
|
170
|
+
|
|
171
|
+
All `HONCHO_*` env vars work at runtime — no config file required.
|
|
172
|
+
|
|
173
|
+
Precedence (highest first): **flag → env var → config file → default**.
|
|
174
|
+
|
|
175
|
+
| Variable | Flag | Description |
|
|
176
|
+
|----------|------|-------------|
|
|
177
|
+
| `HONCHO_API_KEY` | `--api-key` (init) | Admin JWT |
|
|
178
|
+
| `HONCHO_BASE_URL` | `--base-url` (init) | API URL |
|
|
179
|
+
| `HONCHO_WORKSPACE_ID` | `-w` / `--workspace` | Workspace scope |
|
|
180
|
+
| `HONCHO_PEER_ID` | `-p` / `--peer` | Peer scope |
|
|
181
|
+
| `HONCHO_SESSION_ID` | `-s` / `--session` | Session scope |
|
|
182
|
+
| `HONCHO_JSON` | `--json` | Force JSON output (`1` / `true`) |
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Per-command flags
|
|
186
|
+
honcho peer card -w prod -p user
|
|
187
|
+
|
|
188
|
+
# Or export once per shell
|
|
189
|
+
export HONCHO_WORKSPACE_ID=prod
|
|
190
|
+
export HONCHO_PEER_ID=user
|
|
191
|
+
honcho peer card
|
|
192
|
+
|
|
193
|
+
# One-off against a different server
|
|
194
|
+
HONCHO_BASE_URL=http://localhost:8000 honcho workspace list
|
|
195
|
+
|
|
196
|
+
# CI/CD — env vars only, no config file needed
|
|
197
|
+
export HONCHO_API_KEY=hch-v3-xxx
|
|
198
|
+
export HONCHO_BASE_URL=https://api.honcho.dev
|
|
199
|
+
honcho workspace list
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Configuration
|
|
203
|
+
|
|
204
|
+
The CLI shares `~/.honcho/config.json` with sibling Honcho tools. It owns two
|
|
205
|
+
top-level keys: `apiKey` and `environmentUrl` (the full Honcho API URL, e.g.
|
|
206
|
+
`https://api.honcho.dev` or `http://localhost:8000`). Everything else at the
|
|
207
|
+
top level — `hosts`, `sessions`, `saveMessages`, `sessionStrategy`, etc. —
|
|
208
|
+
is left untouched.
|
|
209
|
+
|
|
210
|
+
```json
|
|
211
|
+
{
|
|
212
|
+
"apiKey": "hch-v3-...",
|
|
213
|
+
"environmentUrl": "https://api.honcho.dev",
|
|
214
|
+
"hosts": { "claude_code": { "...": "..." } }
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
`workspace_id` / `peer_id` / `session_id` are per-command only — never
|
|
219
|
+
persisted to the config file.
|
|
220
|
+
|
|
221
|
+
## Development
|
|
222
|
+
|
|
223
|
+
Install from source in editable mode so changes are picked up live:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
git clone https://github.com/plastic-labs/honcho
|
|
227
|
+
cd honcho
|
|
228
|
+
uv tool install --force --editable --from ./honcho-cli honcho-cli
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Re-run any time — changes to `honcho-cli/src/` are reflected immediately without reinstalling.
|
|
232
|
+
|
|
233
|
+
## License
|
|
234
|
+
|
|
235
|
+
MIT
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
```
|
|
2
|
+
██╗ ██╗ ██████╗ ███╗ ██╗ ██████╗██╗ ██╗ ██████╗
|
|
3
|
+
██║ ██║██╔═══██╗████╗ ██║██╔════╝██║ ██║██╔═══██╗
|
|
4
|
+
███████║██║ ██║██╔██╗ ██║██║ ███████║██║ ██║
|
|
5
|
+
██╔══██║██║ ██║██║╚██╗██║██║ ██╔══██║██║ ██║
|
|
6
|
+
██║ ██║╚██████╔╝██║ ╚████║╚██████╗██║ ██║╚██████╔╝
|
|
7
|
+
╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚═╝ ╚═╝ ╚═════╝
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
# honcho-cli
|
|
11
|
+
|
|
12
|
+
A terminal for [Honcho](https://honcho.dev) — memory that reasons.
|
|
13
|
+
|
|
14
|
+
## Install
|
|
15
|
+
|
|
16
|
+
As a standalone tool (recommended):
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
uv tool install honcho-cli
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
As an extra on the Honcho SDK (if you want both the SDK and the CLI in one project):
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
uv add honcho-ai[cli]
|
|
26
|
+
# or
|
|
27
|
+
pip install honcho-ai[cli]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Either way, you'll get the `honcho` command on your PATH.
|
|
31
|
+
|
|
32
|
+
## Quick Start
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
honcho init # confirm/set apiKey + Honcho URL in ~/.honcho/config.json
|
|
36
|
+
honcho doctor # verify your config + connectivity
|
|
37
|
+
honcho # show banner + command list
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`honcho init` reads `apiKey` and `environmentUrl` from the top-level of `~/.honcho/config.json` (the same file other Honcho tools — plugins, host integrations — share). If both are present, it confirms them with you; if either is missing (or you decline), it prompts for the missing value(s) and writes them back. Host-specific entries under `hosts` are left untouched.
|
|
41
|
+
|
|
42
|
+
Per-command scoping (workspace / peer / session) is handled via `-w` / `-p` / `-s` flags or `HONCHO_*` env vars — not persisted as CLI defaults.
|
|
43
|
+
|
|
44
|
+
## Commands
|
|
45
|
+
|
|
46
|
+
### Onboarding
|
|
47
|
+
|
|
48
|
+
| Command | Description |
|
|
49
|
+
|---------|-------------|
|
|
50
|
+
| `honcho init` | Confirm/set `apiKey` + `environmentUrl` in `~/.honcho/config.json` |
|
|
51
|
+
| `honcho doctor` | Health check: config, connectivity, workspace, peer, queue |
|
|
52
|
+
|
|
53
|
+
### Workspaces
|
|
54
|
+
|
|
55
|
+
| Command | Description |
|
|
56
|
+
|---------|-------------|
|
|
57
|
+
| `honcho workspace list` | List accessible workspaces |
|
|
58
|
+
| `honcho workspace create <id>` | Create or get a workspace |
|
|
59
|
+
| `honcho workspace inspect` | Peers, sessions, config for a workspace |
|
|
60
|
+
| `honcho workspace search <query>` | Search messages across workspace |
|
|
61
|
+
| `honcho workspace queue-status` | Deriver queue status (filter with `--observer` / `--sender`) |
|
|
62
|
+
| `honcho workspace delete <id>` | Delete a workspace. Use `--dry-run` to preview, `--cascade` to also delete sessions, `--yes` to skip the confirm prompt |
|
|
63
|
+
|
|
64
|
+
### Peers
|
|
65
|
+
|
|
66
|
+
| Command | Description |
|
|
67
|
+
|---------|-------------|
|
|
68
|
+
| `honcho peer list` | List peers in the workspace |
|
|
69
|
+
| `honcho peer create <id>` | Create or get a peer |
|
|
70
|
+
| `honcho peer inspect <id>` | Card, session count, recent conclusions |
|
|
71
|
+
| `honcho peer card <id>` | Raw peer card content |
|
|
72
|
+
| `honcho peer chat <query>` | Query the dialectic about a peer (peer via `-p` / `HONCHO_PEER_ID`) |
|
|
73
|
+
| `honcho peer representation <id>` | Formatted representation |
|
|
74
|
+
| `honcho peer search <query>` | Search a peer's messages (peer via `-p` / `HONCHO_PEER_ID`) |
|
|
75
|
+
| `honcho peer get-metadata <id>` / `set-metadata` | Metadata operations |
|
|
76
|
+
|
|
77
|
+
### Sessions
|
|
78
|
+
|
|
79
|
+
| Command | Description |
|
|
80
|
+
|---------|-------------|
|
|
81
|
+
| `honcho session list` | List sessions in the workspace (filter with `--peer/-p`) |
|
|
82
|
+
| `honcho session create <id>` | Create or get a session (optionally `--peers` to add peers, `--metadata`) |
|
|
83
|
+
| `honcho session inspect <id>` | Peers, message count, summaries, config |
|
|
84
|
+
| `honcho session context <id>` | What an agent would see |
|
|
85
|
+
| `honcho session summaries <id>` | Short + long summaries |
|
|
86
|
+
| `honcho session peers <id>` / `add-peers` / `remove-peers` | Peer management |
|
|
87
|
+
| `honcho session search <id> <query>` | Search messages in a session |
|
|
88
|
+
| `honcho session representation <id>` | Peer representation in a session |
|
|
89
|
+
| `honcho session get-metadata <id>` / `set-metadata` | Metadata operations |
|
|
90
|
+
| `honcho session delete <id>` | Destructive; requires `--yes` |
|
|
91
|
+
|
|
92
|
+
### Messages
|
|
93
|
+
|
|
94
|
+
| Command | Description |
|
|
95
|
+
|---------|-------------|
|
|
96
|
+
| `honcho message list` | List messages in a session (session via `-s` / `HONCHO_SESSION_ID`) |
|
|
97
|
+
| `honcho message create <content>` | Create a message (requires `--peer/-p`, session via `-s`) |
|
|
98
|
+
| `honcho message get <id>` | Get a single message (session via `-s` / `HONCHO_SESSION_ID`) |
|
|
99
|
+
|
|
100
|
+
### Conclusions (observations)
|
|
101
|
+
|
|
102
|
+
| Command | Description |
|
|
103
|
+
|---------|-------------|
|
|
104
|
+
| `honcho conclusion list` | List conclusions (filter with `--observer` / `--observed`) |
|
|
105
|
+
| `honcho conclusion search <query>` | Semantic search (filter with `--observer` / `--observed`) |
|
|
106
|
+
| `honcho conclusion create` | Create a conclusion |
|
|
107
|
+
| `honcho conclusion delete <id>` | Delete a conclusion |
|
|
108
|
+
|
|
109
|
+
### Config
|
|
110
|
+
|
|
111
|
+
| Command | Description |
|
|
112
|
+
|---------|-------------|
|
|
113
|
+
| `honcho config` | Show current config (API key redacted) |
|
|
114
|
+
|
|
115
|
+
## Agent Usage
|
|
116
|
+
|
|
117
|
+
All commands output JSON when stdout isn't a TTY, or when `--json` is forced.
|
|
118
|
+
Collection commands emit JSON arrays, and single-resource commands emit JSON objects:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
honcho peer list --json
|
|
122
|
+
honcho workspace inspect --json | jq '.peers'
|
|
123
|
+
honcho doctor --json # machine-parseable health checklist
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Errors are structured:
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"error": {
|
|
131
|
+
"code": "PEER_NOT_FOUND",
|
|
132
|
+
"message": "Peer 'abc' not found in workspace 'my-ws'",
|
|
133
|
+
"details": {"workspace_id": "my-ws", "peer_id": "abc"}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Non-interactive onboarding:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Pre-seed via flags / env vars; init still prompts for anything missing
|
|
142
|
+
HONCHO_API_KEY=hch-v3-xxx honcho init --base-url https://api.honcho.dev
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Environment Variables
|
|
146
|
+
|
|
147
|
+
All `HONCHO_*` env vars work at runtime — no config file required.
|
|
148
|
+
|
|
149
|
+
Precedence (highest first): **flag → env var → config file → default**.
|
|
150
|
+
|
|
151
|
+
| Variable | Flag | Description |
|
|
152
|
+
|----------|------|-------------|
|
|
153
|
+
| `HONCHO_API_KEY` | `--api-key` (init) | Admin JWT |
|
|
154
|
+
| `HONCHO_BASE_URL` | `--base-url` (init) | API URL |
|
|
155
|
+
| `HONCHO_WORKSPACE_ID` | `-w` / `--workspace` | Workspace scope |
|
|
156
|
+
| `HONCHO_PEER_ID` | `-p` / `--peer` | Peer scope |
|
|
157
|
+
| `HONCHO_SESSION_ID` | `-s` / `--session` | Session scope |
|
|
158
|
+
| `HONCHO_JSON` | `--json` | Force JSON output (`1` / `true`) |
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Per-command flags
|
|
162
|
+
honcho peer card -w prod -p user
|
|
163
|
+
|
|
164
|
+
# Or export once per shell
|
|
165
|
+
export HONCHO_WORKSPACE_ID=prod
|
|
166
|
+
export HONCHO_PEER_ID=user
|
|
167
|
+
honcho peer card
|
|
168
|
+
|
|
169
|
+
# One-off against a different server
|
|
170
|
+
HONCHO_BASE_URL=http://localhost:8000 honcho workspace list
|
|
171
|
+
|
|
172
|
+
# CI/CD — env vars only, no config file needed
|
|
173
|
+
export HONCHO_API_KEY=hch-v3-xxx
|
|
174
|
+
export HONCHO_BASE_URL=https://api.honcho.dev
|
|
175
|
+
honcho workspace list
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Configuration
|
|
179
|
+
|
|
180
|
+
The CLI shares `~/.honcho/config.json` with sibling Honcho tools. It owns two
|
|
181
|
+
top-level keys: `apiKey` and `environmentUrl` (the full Honcho API URL, e.g.
|
|
182
|
+
`https://api.honcho.dev` or `http://localhost:8000`). Everything else at the
|
|
183
|
+
top level — `hosts`, `sessions`, `saveMessages`, `sessionStrategy`, etc. —
|
|
184
|
+
is left untouched.
|
|
185
|
+
|
|
186
|
+
```json
|
|
187
|
+
{
|
|
188
|
+
"apiKey": "hch-v3-...",
|
|
189
|
+
"environmentUrl": "https://api.honcho.dev",
|
|
190
|
+
"hosts": { "claude_code": { "...": "..." } }
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
`workspace_id` / `peer_id` / `session_id` are per-command only — never
|
|
195
|
+
persisted to the config file.
|
|
196
|
+
|
|
197
|
+
## Development
|
|
198
|
+
|
|
199
|
+
Install from source in editable mode so changes are picked up live:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
git clone https://github.com/plastic-labs/honcho
|
|
203
|
+
cd honcho
|
|
204
|
+
uv tool install --force --editable --from ./honcho-cli honcho-cli
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Re-run any time — changes to `honcho-cli/src/` are reflected immediately without reinstalling.
|
|
208
|
+
|
|
209
|
+
## License
|
|
210
|
+
|
|
211
|
+
MIT
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "honcho-cli"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "A terminal for Honcho — memory that reasons."
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.11"
|
|
7
|
+
license = "MIT"
|
|
8
|
+
authors = [
|
|
9
|
+
{ name = "Plastic Labs", email = "hello@plasticlabs.ai" },
|
|
10
|
+
]
|
|
11
|
+
classifiers = [
|
|
12
|
+
"Development Status :: 3 - Alpha",
|
|
13
|
+
"Environment :: Console",
|
|
14
|
+
"Intended Audience :: Developers",
|
|
15
|
+
"Programming Language :: Python :: 3.11",
|
|
16
|
+
"Programming Language :: Python :: 3.12",
|
|
17
|
+
"Topic :: Software Development :: Libraries",
|
|
18
|
+
]
|
|
19
|
+
dependencies = [
|
|
20
|
+
"typer>=0.15.0",
|
|
21
|
+
"honcho-ai>=2.0.0",
|
|
22
|
+
"rich>=13.0.0",
|
|
23
|
+
"httpx>=0.27.0",
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
[project.urls]
|
|
27
|
+
Homepage = "https://github.com/plastic-labs/honcho"
|
|
28
|
+
Repository = "https://github.com/plastic-labs/honcho"
|
|
29
|
+
|
|
30
|
+
[project.scripts]
|
|
31
|
+
honcho = "honcho_cli.main:app"
|
|
32
|
+
|
|
33
|
+
[build-system]
|
|
34
|
+
requires = ["hatchling"]
|
|
35
|
+
build-backend = "hatchling.build"
|
|
36
|
+
|
|
37
|
+
[tool.hatch.build.targets.wheel]
|
|
38
|
+
packages = ["src/honcho_cli"]
|
|
39
|
+
|
|
40
|
+
[tool.pytest.ini_options]
|
|
41
|
+
testpaths = ["tests"]
|
|
42
|
+
|
|
43
|
+
[project.optional-dependencies]
|
|
44
|
+
dev = [
|
|
45
|
+
"pytest>=8.0.0",
|
|
46
|
+
"pytest-mock>=3.14.0",
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
[[tool.uv.index]]
|
|
50
|
+
name = "testpypi"
|
|
51
|
+
url = "https://test.pypi.org/simple/"
|
|
52
|
+
publish-url = "https://test.pypi.org/legacy/"
|
|
53
|
+
explicit = true
|