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.
@@ -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
@@ -0,0 +1,3 @@
1
+ """Honcho CLI — a terminal for Honcho."""
2
+
3
+ __version__ = "0.1.0"