hcom 0.7.23__py3-none-win_amd64.whl

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.
Binary file
@@ -0,0 +1,469 @@
1
+ Metadata-Version: 2.4
2
+ Name: hcom
3
+ Version: 0.7.23
4
+ Classifier: Development Status :: 4 - Beta
5
+ Classifier: Environment :: Console
6
+ Classifier: Intended Audience :: Developers
7
+ Classifier: Operating System :: MacOS
8
+ Classifier: Operating System :: Microsoft :: Windows
9
+ Classifier: Operating System :: POSIX :: Linux
10
+ Classifier: Topic :: Communications :: Chat
11
+ Classifier: Topic :: Software Development
12
+ Classifier: Topic :: System :: Monitoring
13
+ Classifier: Topic :: Terminals
14
+ License-File: LICENSE
15
+ Summary: Let AI agents message, watch, and spawn each other across terminals. Claude Code, Gemini CLI, Codex, OpenCode, Kilo Code, Pi, Oh My Pi, Antigravity, Cursor, Kimi, Copilot.
16
+ Keywords: claude,claude-code,gemini,codex,opencode,kilo,kilocode,pi,omp,oh-my-pi,antigravity,cursor,kimi,copilot,hooks,agents,cli,multi-agent,orchestration,terminal
17
+ Home-Page: https://github.com/aannoo/hcom
18
+ Author: aannoo
19
+ License-Expression: MIT
20
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
21
+ Project-URL: Documentation, https://github.com/aannoo/hcom#readme
22
+ Project-URL: Homepage, https://github.com/aannoo/hcom
23
+ Project-URL: Issues, https://github.com/aannoo/hcom/issues
24
+ Project-URL: Repository, https://github.com/aannoo/hcom
25
+
26
+ # hcom
27
+
28
+ [![CI](https://github.com/aannoo/hcom/actions/workflows/ci.yml/badge.svg)](https://github.com/aannoo/hcom/actions/workflows/ci.yml)
29
+ [![Latest release](https://img.shields.io/github/v/release/aannoo/hcom)](https://github.com/aannoo/hcom/releases)
30
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/aannoo/hcom/blob/main/LICENSE)
31
+
32
+ > **Hook your coding agents together**
33
+
34
+ `hcom` is a CLI that agents can use to message, watch, and spawn each other across terminals. It integrates with Claude Code, Gemini, Codex, OpenCode, Kilo Code, Pi, Oh My Pi, Antigravity, Cursor, Kimi and Copilot without changing how you use them.
35
+
36
+ Use it to coordinate pipelines, run different AI CLIs as each other's subagents, or just instead of copy-paste.
37
+
38
+ Single Rust binary, no background services. Start an agent with `hcom` in front, then prompt normally.
39
+
40
+ https://github.com/user-attachments/assets/1ce23ed9-f529-4be0-8124-816aa4c2fd43
41
+
42
+ ---
43
+
44
+ ## Install
45
+
46
+ ```bash
47
+ brew install aannoo/hcom/hcom
48
+ ```
49
+
50
+ <details><summary>Other install options</summary>
51
+
52
+ ```bash
53
+ # Shell installer for macOS, Linux, Android (Termux), and WSL
54
+ curl -fsSL https://github.com/aannoo/hcom/releases/latest/download/hcom-installer.sh | sh
55
+ ```
56
+
57
+ ```powershell
58
+ # PowerShell installer for Windows
59
+ irm https://github.com/aannoo/hcom/releases/latest/download/hcom-installer.ps1 | iex
60
+ ```
61
+
62
+ ```bash
63
+ # With PyPI
64
+ uv tool install hcom # or: pip install hcom
65
+ ```
66
+
67
+ ```bash
68
+ # Update any existing install to latest hcom version
69
+ hcom update
70
+ ```
71
+
72
+ </details>
73
+
74
+ ---
75
+
76
+ ## Quickstart
77
+
78
+ Terminal 1:
79
+
80
+ ```bash
81
+ hcom claude # codex / gemini / opencode / kilo / pi / omp / agy / cursor-agent / kimi / copilot
82
+ ```
83
+
84
+ Terminal 2:
85
+
86
+ ```bash
87
+ hcom codex
88
+ ```
89
+
90
+ Prompt:
91
+
92
+ - `ask the other agent their favorite cake`
93
+ - `review what claude did and send it fixes`
94
+ - `spawn 3x gemini, split work, collect results`
95
+ - `fork yourself to investigate the bug and report back`
96
+
97
+ Open the TUI:
98
+
99
+ ```bash
100
+ hcom
101
+ ```
102
+
103
+ ---
104
+
105
+ ## What agents can do
106
+
107
+ **Message** each other in real-time: intent, replies, bundled context for handoffs.
108
+
109
+ **Observe** each other: transcripts, file edits, terminal screens, command history.
110
+
111
+ **Subscribe** to each other: notify on status changes, file edits, specific events. React automatically.
112
+
113
+ **Spawn**, **fork**, **resume**, **kill** each other, in any terminal emulator or headless.
114
+
115
+ ---
116
+
117
+ ## How it works
118
+
119
+ Hooks record activity to a local SQLite database and deliver messages from it.
120
+
121
+ ```bash
122
+ agent → hooks → db → hooks → other agent
123
+ ```
124
+
125
+ Messages arrive mid-turn (injected between tool calls) or wake idle agents immediately.
126
+
127
+ Each agent gets a queryable identity:
128
+
129
+ - name
130
+ - status (active, blocked, listening)
131
+ - inbox
132
+ - live terminal screen
133
+ - transcript in structured chunks
134
+ - event log of every status change, file edit, tool call
135
+
136
+ Agents can subscribe to events and react instantly. Collision detection is on by default: if two agents edit the same file within 30 seconds, both get notified.
137
+
138
+ Hooks go into config dirs under `~/` (or `HCOM_DIR`) on first run. If you aren't using hcom, the hooks do nothing.
139
+
140
+ Without hooks, any other AI tool can join by running `hcom start`. Any process can wake agents with `hcom send`.
141
+
142
+ ---
143
+
144
+ ## Terminal
145
+
146
+ Every agent runs in a real terminal you can see, scroll, and interrupt. Any emulator works for spawning; **kitty**, **wezterm**, **tmux**, **zellij**, **waveterm**, **cmux**, **herdr** also support closing panes from `hcom kill`.
147
+
148
+ To configure a custom terminal open/close setup, tell an agent to run:
149
+
150
+ ```bash
151
+ hcom config terminal --info
152
+ ```
153
+
154
+ ---
155
+
156
+ ## Cross-device
157
+
158
+ Connect agents across machines via MQTT relay.
159
+
160
+ ```bash
161
+ hcom relay new # get token
162
+ hcom relay connect <token> # on each device
163
+ ```
164
+
165
+ ```bash
166
+ hcom relay status # check connection
167
+ hcom relay off|on # toggle
168
+ ```
169
+
170
+ <details>
171
+ <summary>Relay Security</summary>
172
+
173
+ ### Security
174
+
175
+ - Relay payloads are end-to-end encrypted. Brokers do not see data.
176
+ - Treat the join token like an SSH key or API key.
177
+ - If the token may have leaked, run `hcom relay off --all` to disconnect all devices.
178
+ - Use a private/custom/self-hosted broker with `--broker` and `--password` for better security.
179
+
180
+ ### Security model
181
+
182
+ `hcom relay` is one trust domain for one operator's devices. Membership is all-or-nothing. There are no scoped roles, read-only peers, or per-device permissions.
183
+
184
+ Relay payloads use a shared PSK with XChaCha20-Poly1305. The encryption binds each payload to the relay, topic, and timestamp. A replay guard drops duplicate envelopes inside a freshness window.
185
+
186
+ Brokers and network observers cannot read or forge payloads without the PSK. They can still see metadata: topic names, timing, message sizes, and connection patterns.
187
+
188
+ ### What the token means
189
+
190
+ The join token contains the relay ID, broker URL, and raw PSK. hcom does not ask a server to validate it. It has no expiry, no scope, and no revocation list.
191
+
192
+ On public brokers, a leaked token gives an attacker full control of the relay. They can decrypt captured traffic, publish authenticated relay traffic, send text to listening agents, launch agents on enrolled devices, kill running agents, and use remote relay RPCs. If those agents can run tools, treat that as shell access on every enrolled device in the relay.
193
+
194
+ On private brokers with `--password`, the token still leaks the PSK, so captured traffic is still exposed. But the token alone is not enough to publish unless the attacker also has the broker password. Use a private broker when broker-side access control matters, or when the metadata shape of your traffic is itself sensitive. `--password` is broker access control, not another layer of message encryption.
195
+
196
+ ### Limits by design
197
+
198
+ - Forward secrecy. A leaked PSK can decrypt old captured traffic.
199
+ - Per-device attribution inside a relay. Sender identity is routing metadata, not authorization. Every enrolled device speaks with full authority.
200
+ - Prompt injection from an authenticated peer. Enrollment is total trust — a peer can launch, kill, and drive agents via RPC, not just send messages. Only enroll devices you would give shell access to.
201
+ - Local OS compromise. hcom trusts the local user account and `~/.hcom/config.toml`. It does not defend against another user on the same account or malware with filesystem access.
202
+
203
+ ### Storage
204
+
205
+ The PSK is stored in `~/.hcom/config.toml`. On Unix, hcom writes that file with mode `0600`.
206
+
207
+ hcom keeps the PSK out of environment variables. Remote `config_get` and `config_set` refuse `relay_psk`, `relay_token`, `relay_id`, and the broker URL. `hcom relay status` shows only a short fingerprint so two devices can verify they share the same key without printing it.
208
+
209
+ Anyone who can read that file — another user on the same OS account, malware, or a backup written without preserving permissions — has the full PSK.
210
+
211
+ ### Incident response
212
+
213
+ Run `hcom relay off --all`. It asks every reachable trusted peer to disable the relay, then disables it locally, so your agents stop acting on attacker messages. It is best-effort damage control, not containment: the attacker's device ignores the request.
214
+
215
+ The PSK cannot be revoked. There is no server to notify and no denylist to update. Anyone who has the PSK can keep using the old relay until you stop using it.
216
+
217
+ To keep using relay after a leak, create a new relay with `hcom relay new` and move every trusted device to the new token. Rotation also changes the `relay_id`, so retained state on the old broker topics is orphaned.
218
+
219
+ </details>
220
+
221
+ ---
222
+
223
+ ## Troubleshoot
224
+
225
+ ```bash
226
+ hcom status # diagnostics
227
+ hcom reset all # clear and archive: database + hooks + config
228
+ ```
229
+
230
+ ---
231
+
232
+ ## Uninstall
233
+
234
+ ```bash
235
+ hcom hooks remove # safely remove all hcom hooks
236
+ brew uninstall hcom # or: rm $(which hcom)
237
+ ```
238
+
239
+ ---
240
+
241
+ ## Reference
242
+
243
+ <details>
244
+ <summary>Tools</summary>
245
+
246
+ ### Supported tools
247
+
248
+ | Tool | Message delivery | Connect |
249
+ |---|---|---|
250
+ | Claude Code | automatic | `hcom claude` |
251
+ | Gemini CLI | automatic | `hcom gemini` |
252
+ | Codex CLI | automatic | `hcom codex` |
253
+ | Antigravity CLI | automatic | `hcom agy` |
254
+ | OpenCode | automatic | `hcom opencode` |
255
+ | Kilo Code | automatic | `hcom kilo` |
256
+ | Pi | automatic | `hcom pi` |
257
+ | Oh My Pi | automatic | `hcom omp` |
258
+ | Cursor CLI | automatic | `hcom cursor-agent` |
259
+ | Kimi | automatic | `hcom kimi` |
260
+ | Copilot CLI | automatic | `hcom copilot` |
261
+ | Anything else | manual via `hcom listen` | `hcom start` (run inside tool) |
262
+
263
+ ```bash
264
+ hcom r <session_id> # Resume a session started outside hcom
265
+ hcom f <session_id> # Fork a session in hcom
266
+ ```
267
+
268
+ #### Claude Code headless and subagents
269
+
270
+ Detached background processes in print mode stay alive. Manage through the TUI.
271
+
272
+ ```bash
273
+ hcom claude -p 'say hi in hcom' # print mode (separate Agent SDK credits)
274
+ hcom claude --headless # Run normal claude in background pty (works for any tool)
275
+ ```
276
+
277
+ For subagents, run `hcom claude`, then prompt:
278
+
279
+ > run 2x task tool and get them to talk to each other in hcom
280
+
281
+ </details>
282
+
283
+
284
+ <details>
285
+ <summary>CLI</summary>
286
+
287
+ ### CLI commands
288
+
289
+ What you might type from a shell. Agents run their own commands that they learn from the hcom CLI primer (~700 tokens) at launch. `hcom <command> --help` for full flags.
290
+
291
+ ### Spawn
292
+
293
+ ```bash
294
+ hcom [N] claude|gemini|codex|agy|opencode|kilo|pi|omp|cursor-agent|kimi|copilot # launch N agents
295
+ hcom r <name|session_id> # resume agent
296
+ hcom f <name|session_id> # fork session
297
+ hcom kill <name|tag:T|all> # kill + close terminal pane
298
+ ```
299
+
300
+ hcom launch flags:
301
+
302
+ | Flag | Purpose |
303
+ |---|---|
304
+ | `--tag <name>` | Group label — agents can be addressed as `@tag` |
305
+ | `--terminal <preset>` | Where windows open: `default` (auto-detect), `kitty`, `wezterm`, `tmux`, `cmux`, `iterm`, etc… |
306
+ | `--dir <path>` | Directory where the agent launches |
307
+ | `--headless` | Run in background pty with no terminal window |
308
+ | `--device <name>` | Spawn on a remote device (via relay) |
309
+ | `--hcom-prompt <text>` | Initial user prompt |
310
+ | `--hcom-system-prompt <text>` | Append to system prompt |
311
+
312
+ Anything else is forwarded to the tool: `--model sonnet`, `--yolo`, etc.
313
+
314
+ ### Other commands
315
+
316
+ ```bash
317
+ hcom # TUI dashboard
318
+ hcom send -b @luna -- hey # one-off message to an agent
319
+ hcom list # show all active agents
320
+ hcom term [name] # view/inject into an agent's PTY screen
321
+ hcom events --wait <filters> # Block until match for scripting
322
+ hcom update # update hcom version
323
+ ```
324
+
325
+ `hcom run docs --cli` for all commands.
326
+
327
+ </details>
328
+
329
+ <details>
330
+ <summary>Config</summary>
331
+
332
+ ### Configuration
333
+
334
+ Config lives in `~/.hcom/config.toml`. Precedence: defaults < `config.toml` < env vars.
335
+
336
+ ```bash
337
+ hcom config # show all values with sources
338
+ hcom config <key> # get
339
+ hcom config <key> <value> # set
340
+ hcom config <key> --info # detailed help for a key
341
+ hcom config -i <name> <key> <value> # per-agent override at runtime
342
+ ```
343
+
344
+ ### Keys
345
+
346
+ | Key | Purpose |
347
+ |---|---|
348
+ | `tag` | Group label — launched agents become `tag-name` |
349
+ | `hints` | Text appended to every message the agent receives |
350
+ | `notes` | Text appended to bootstrap (one-time, at launch) |
351
+ | `auto_approve` | Auto-approve safe hcom commands (send/list/events/…) |
352
+ | `auto_subscribe` | Event subscription presets: `collision`, `created`, `stopped`, `blocked` |
353
+ | `name_export` | Export instance name to a custom env var |
354
+ | `terminal` | Where new agent windows open (`hcom config terminal --info`) |
355
+ | `timeout` | Idle timeout for headless/vanilla Claude (seconds) |
356
+ | `subagent_timeout` | Keep-alive for Claude subagents (seconds) |
357
+ | `claude_args` / `gemini_args` / `codex_args` / `opencode_args` / `kilo_args` / `pi_args` / `omp_args` / `cursor_args` / `kimi_args` / `copilot_args` | Default args passed to the tool |
358
+
359
+ ### Scope
360
+
361
+ ```bash
362
+ hcom config tag mycrew # global
363
+ hcom config -i luna hints "respond in JSON" # per-agent
364
+ HCOM_TAG=dev hcom 3 claude # per-launch env
365
+ ```
366
+
367
+ ### Per-project isolation
368
+
369
+ ```bash
370
+ export HCOM_DIR="$PWD/.hcom" # isolate state + hooks to this folder
371
+ hcom hooks remove && rm -rf "$HCOM_DIR"
372
+ ```
373
+
374
+ Run `hcom config <key> --info` or `hcom run docs --config` for the full per-key reference.
375
+
376
+ Edit `~/.hcom/env` to set external env vars passed to every launched agent.
377
+
378
+ </details>
379
+
380
+ <details>
381
+ <summary>Workflow Scripts</summary>
382
+
383
+ ### Multi-agent workflows
384
+
385
+ Bundled and user scripts (`~/.hcom/scripts/`) for multi-agent patterns:
386
+
387
+ ```bash
388
+ hcom run # list available scripts
389
+ hcom run debate "topic" # run one
390
+ hcom run docs # tell agent to run this to create any new workflow
391
+ ```
392
+
393
+ ### Included Scripts
394
+
395
+ Tell agent to run them:
396
+
397
+ **`hcom run confess`** — An agent (or background clone) writes an honesty self-eval. A spawned calibrator reads the target's transcript independently. A judge compares both reports and sends back a verdict via hcom message.
398
+
399
+ **`hcom run debate`** — A judge spawns and sets up a debate with existing agents. It coordinates rounds in a shared thread where all agents see each other's arguments, with shared context of workspace files and transcripts.
400
+
401
+ **`hcom run fatcow`** — headless agent reads every file in a path, subscribes to file edit events to stay current, and answers other agents on demand.
402
+
403
+ Custom scripts: drop `*.sh` or `*.py` into `~/.hcom/scripts/` — auto-discovered, override bundled scripts of the same name. Ask an agent to author one; `hcom run docs --scripts` is the authoring guide.
404
+
405
+ </details>
406
+
407
+ <details>
408
+ <summary>Build</summary>
409
+
410
+ ### Building from Source
411
+
412
+ ```bash
413
+ # Prerequisites: Rust 1.88+
414
+
415
+ git clone https://github.com/aannoo/hcom.git
416
+ cd hcom
417
+ cargo build
418
+ cargo test
419
+ ```
420
+
421
+ ### Using local build
422
+
423
+ Two options:
424
+
425
+ **Symlink** — simple, dev build is global.
426
+
427
+ ```bash
428
+ ln -sf $(pwd)/target/debug/hcom ~/.cargo/bin/hcom
429
+ ```
430
+
431
+ **dev_root** — works regardless of how hcom was installed (brew, pip, etc.); picks the newer of debug/release automatically:
432
+
433
+ ```bash
434
+ hcom config dev_root $(pwd)
435
+ hcom config dev_root --unset # revert
436
+ hcom status # run local build
437
+ ```
438
+
439
+ For concurrent worktrees, scope each to its own DB:
440
+
441
+ ```bash
442
+ HCOM_DIR=$PWD/.hcom HCOM_DEV_ROOT=$PWD hcom claude
443
+ ```
444
+
445
+ </details>
446
+
447
+
448
+ ---
449
+
450
+ ## Contributing
451
+
452
+ Issues and PRs welcome. The codebase is Rust.
453
+
454
+ ```bash
455
+ cargo build && cargo test
456
+ hcom config dev_root $(pwd)
457
+ hcom status
458
+ just ci # run the CI gate locally
459
+
460
+ # On native Windows (PowerShell)
461
+ just ci-windows
462
+ ```
463
+
464
+ ---
465
+
466
+ ## License
467
+
468
+ [MIT](LICENSE)
469
+
@@ -0,0 +1,6 @@
1
+ hcom-0.7.23.data/scripts/hcom.exe,sha256=G-0GXsQDaA3KuBeQWm7DIOaoecLNx6i_Zv5NmkYYsnw,14864896
2
+ hcom-0.7.23.dist-info/METADATA,sha256=J2AnqQYY6xsN_cla-VF877Uyl37wPbvfgX_ueLPmtjw,16338
3
+ hcom-0.7.23.dist-info/WHEEL,sha256=2zDlIYIdD4m4N3p5DVEG3iJhGLdhsBQgdH-FqVkAur8,94
4
+ hcom-0.7.23.dist-info/licenses/LICENSE,sha256=GT_0yZ5sAG5zU-6uES74ZrGeFi_zFhbn71_GjbtVzvA,1084
5
+ hcom-0.7.23.dist-info/sboms/hcom.cyclonedx.json,sha256=yZRolJlyBoz4PLBzT_GNy-9xQrOJmi-CKPaLpP1VFwI,289978
6
+ hcom-0.7.23.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: maturin (1.14.1)
3
+ Root-Is-Purelib: false
4
+ Tag: py3-none-win_amd64
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 aannoo
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.