@kolisachint/hoocode 0.1.40 → 0.2.0
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.
- package/README.md +145 -121
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,170 +1,194 @@
|
|
|
1
|
-
|
|
1
|
+
<h1 align="center">hoocode</h1>
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<p align="center">A terminal coding agent, written in Rust. One static binary, any model provider, nothing applied without your say-so.</p>
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://github.com/kolisachint/hoocode/actions/workflows/ci.yml"><img src="https://github.com/kolisachint/hoocode/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI"></a>
|
|
7
|
+
<a href="https://github.com/kolisachint/hoocode/releases/latest"><img src="https://img.shields.io/github/v/release/kolisachint/hoocode?sort=semver" alt="Latest release"></a>
|
|
8
|
+
<a href="https://www.npmjs.com/package/@kolisachint/hoocode"><img src="https://img.shields.io/npm/v/@kolisachint/hoocode?label=npm" alt="npm"></a>
|
|
9
|
+
<a href="https://pypi.org/project/hoocode/"><img src="https://img.shields.io/pypi/v/hoocode?label=PyPI" alt="PyPI"></a>
|
|
10
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT license"></a>
|
|
11
|
+
</p>
|
|
6
12
|
|
|
7
|
-
|
|
13
|
+
<p align="center">
|
|
14
|
+
<img src="docs/assets/demo.gif" alt="hoocode in a terminal: asked to make mean() return an Option, it reads src/lib.rs, shows the edit as a diff and waits for approval, runs cargo test after a second approval (1 passed), sums up, and then opens the slash-command menu" width="800">
|
|
15
|
+
</p>
|
|
8
16
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
...
|
|
17
|
-
...
|
|
18
|
-
```
|
|
17
|
+
<p align="center"><sub>The real binary; only the model is scripted, so the demo can be recorded again for each release (<code>scripts/demo/record.sh</code>).</sub></p>
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
hoocode reads your code, runs commands, edits files and talks to the model of your
|
|
22
|
+
choice, from a full-screen terminal UI or as a one-shot command. It is a single native
|
|
23
|
+
binary: no Node, no Python, no runtime to install.
|
|
19
24
|
|
|
20
|
-
|
|
25
|
+
- **Any provider.** Anthropic, OpenAI, Google, OpenRouter, Groq, DeepSeek, xAI, Fireworks
|
|
26
|
+
and more, by API key or by `/login` (Anthropic, GitHub Copilot, OpenAI Codex, Google).
|
|
27
|
+
- **You stay in control.** Shell, Edit and Write ask first (Yes / No / Always). Four
|
|
28
|
+
agent modes (ask, plan, build, debug) scope what the agent may do.
|
|
29
|
+
- **Subagents.** The agent can hand work to background subagents and keep going; their
|
|
30
|
+
tool calls go through the same approval gate as the main agent.
|
|
31
|
+
- **Sessions you can come back to.** `--continue`, `/resume`, `/fork`, `/tree`, and
|
|
32
|
+
automatic compaction of long conversations.
|
|
33
|
+
- **Extensible with open formats.** `AGENTS.md` / `CLAUDE.md` context files, skills,
|
|
34
|
+
prompt templates and slash commands, MCP servers, plugins, themes and keybindings.
|
|
35
|
+
- **Scriptable.** Print mode (`-p`) with text or JSON output, and a JSON-RPC mode
|
|
36
|
+
(`--mode rpc`) for driving hoocode from another program.
|
|
21
37
|
|
|
22
|
-
##
|
|
38
|
+
## Install
|
|
23
39
|
|
|
24
|
-
**macOS
|
|
40
|
+
hoocode runs on **macOS and Linux, on x64 and arm64**. The Linux builds are static
|
|
41
|
+
(musl), so one binary runs on any distro. There is no Windows build yet.
|
|
42
|
+
|
|
43
|
+
**Install script** (no root, no Node):
|
|
25
44
|
|
|
26
45
|
```bash
|
|
27
46
|
curl -fsSL https://kolisachint.github.io/hoocode/install.sh | sh
|
|
28
47
|
```
|
|
29
48
|
|
|
30
|
-
It
|
|
31
|
-
|
|
32
|
-
options (`--version`, `--dir`,
|
|
49
|
+
It downloads the release archive for your platform, checks it against the release's
|
|
50
|
+
`SHA256SUMS`, installs `~/.hoocode/bin/hoocode` (plus a `hoo` alias) and adds
|
|
51
|
+
`~/.hoocode/bin` to your `PATH`. Pass `--help` for the options (`--version`, `--dir`,
|
|
52
|
+
`--no-modify-path`). The script is [`install/install.sh`](install/install.sh) in this repo.
|
|
33
53
|
|
|
34
|
-
**npm
|
|
54
|
+
**npm or bun** (Node 18 or newer):
|
|
35
55
|
|
|
36
56
|
```bash
|
|
37
57
|
npm install -g @kolisachint/hoocode # or: bun add -g @kolisachint/hoocode
|
|
38
58
|
```
|
|
39
59
|
|
|
40
|
-
The package pulls in only the binary for your platform
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
### From source
|
|
60
|
+
The package pulls in only the native binary for your platform. It installs `hoocode`
|
|
61
|
+
and `hoo`.
|
|
44
62
|
|
|
45
|
-
|
|
63
|
+
**pip** (Python 3.8 or newer):
|
|
46
64
|
|
|
47
65
|
```bash
|
|
48
|
-
|
|
49
|
-
cd hoocode
|
|
50
|
-
scripts/install.sh # → updates ~/.hoocode/bin/hoocode if installed, else ~/.local/bin
|
|
51
|
-
scripts/install.sh --prefix /usr/local/bin --also-hoocode # also keep a `hoocode` link
|
|
66
|
+
pip install hoocode # or: pipx install hoocode
|
|
52
67
|
```
|
|
53
68
|
|
|
54
|
-
|
|
55
|
-
`
|
|
56
|
-
|
|
57
|
-
### Pre-built binaries
|
|
58
|
-
|
|
59
|
-
Download `hoocode-<target>.tar.gz` from the
|
|
60
|
-
[GitHub Releases](https://github.com/kolisachint/hoocode/releases) page and check it
|
|
61
|
-
against `SHA256SUMS`. It holds the `hoocode` binary; put it on your `PATH`. Linux builds are static (musl) and run on any distro.
|
|
69
|
+
A thin launcher: on first run it downloads the release binary for your platform,
|
|
70
|
+
checks its sha256 against `SHA256SUMS` and caches it under `~/.cache/hoocode/`.
|
|
62
71
|
|
|
63
|
-
|
|
72
|
+
**Prebuilt binaries.** Every [GitHub release](https://github.com/kolisachint/hoocode/releases)
|
|
73
|
+
has `hoocode-<target>.tar.gz` for `x86_64-unknown-linux-musl`,
|
|
74
|
+
`aarch64-unknown-linux-musl`, `x86_64-apple-darwin` and `aarch64-apple-darwin`, and a
|
|
75
|
+
`SHA256SUMS` file. Unpack it and put `hoocode` on your `PATH`:
|
|
64
76
|
|
|
65
77
|
```bash
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
hoocode -p --mode json "Explain this codebase"
|
|
69
|
-
|
|
70
|
-
# Interactive TUI mode
|
|
71
|
-
hoocode
|
|
72
|
-
|
|
73
|
-
# JSON-RPC server mode
|
|
74
|
-
hoocode --mode rpc
|
|
75
|
-
|
|
76
|
-
# Subagent mode (used internally by the Agent tool)
|
|
77
|
-
hoocode --mode subagent --task-id <id>
|
|
78
|
+
tar xzf hoocode-aarch64-apple-darwin.tar.gz
|
|
79
|
+
install -m 755 hoocode-aarch64-apple-darwin/hoocode ~/.local/bin/hoocode
|
|
78
80
|
```
|
|
79
81
|
|
|
80
|
-
|
|
82
|
+
**From source** (Rust 1.88 or newer; the repo pins its dev toolchain in
|
|
83
|
+
[`rust-toolchain.toml`](rust-toolchain.toml), which rustup picks up by itself):
|
|
81
84
|
|
|
82
85
|
```bash
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
# Run checks for all crates
|
|
87
|
-
cargo check --workspace
|
|
88
|
-
|
|
89
|
-
# Run all tests (CI uses nextest; `cargo test --workspace` works too)
|
|
90
|
-
cargo nextest run --workspace
|
|
86
|
+
git clone https://github.com/kolisachint/hoocode
|
|
87
|
+
cd hoocode
|
|
88
|
+
cargo install --locked --path crates/hoocode-code-main --bin hoocode
|
|
91
89
|
```
|
|
92
90
|
|
|
93
|
-
|
|
91
|
+
Or run `scripts/install.sh`, which builds a release binary and installs it as
|
|
92
|
+
`hoocode` and `hoo` into `~/.hoocode/bin` (if the install script was used before) or
|
|
93
|
+
`~/.local/bin`. `--prefix DIR` picks another directory.
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
CI gates (parallel) → version bump, tag and GitHub release → binaries for 4 targets in
|
|
97
|
-
parallel, each uploaded as soon as it is built. Optional labels: `release:skip-gates`
|
|
98
|
-
(skip the gates, the PR's CI already passed) and `release:crates` (also publish to
|
|
99
|
-
crates.io, off by default). Manual runs: Actions → Release.
|
|
95
|
+
hoocode is not on crates.io or Homebrew.
|
|
100
96
|
|
|
101
|
-
|
|
97
|
+
**Updating.** `hoocode update` prints the right update command for how you installed it.
|
|
102
98
|
|
|
103
|
-
|
|
104
|
-
daily coding agent. Phases 7, 8 and 11 are complete. Phase 10 is complete apart from the
|
|
105
|
-
deferred items listed below. Every remaining task is **deferred** by user decision; none is
|
|
106
|
-
in progress. Status per task: `python3 archive/migration/ledger.py status`.
|
|
99
|
+
## Quick start
|
|
107
100
|
|
|
108
|
-
|
|
101
|
+
```bash
|
|
102
|
+
export ANTHROPIC_API_KEY=... # or any provider key, see `hoocode --help`
|
|
103
|
+
cd your-project
|
|
104
|
+
hoocode # full-screen interactive session
|
|
105
|
+
```
|
|
109
106
|
|
|
110
|
-
|
|
111
|
-
(with a Rust `RpcClient`).
|
|
112
|
-
- **Providers:** every catalog provider, plus OAuth logins (`/login`) and `models.json`.
|
|
113
|
-
- **Sessions:** AgentSession with compaction, `/new`, `/resume`, `/fork`, `/tree`,
|
|
114
|
-
`--continue`, `--session`, and `/export <file>.jsonl`.
|
|
115
|
-
- **Tools:** Read, Shell, Edit, Write, lexical CodeSearch, TodoWrite, AskUserQuestion, and the
|
|
116
|
-
Yes/No/Always permission prompt.
|
|
117
|
-
- **Agent modes:** ask/plan/build/debug (`/mode`, `/plan`, `/grill`, `/approve`, alt+a).
|
|
118
|
-
- **Subagents:** the Agent/AgentOutput tools, the task panel, and the subagent roster.
|
|
119
|
-
- **Resources:** skills, prompt templates and slash commands, AGENTS.md/CLAUDE.md context
|
|
120
|
-
files, themes, settings (`/settings`) and keybindings.
|
|
107
|
+
No API key? Start `hoocode` and run `/login` to sign in with a subscription instead.
|
|
121
108
|
|
|
122
|
-
|
|
109
|
+
A few things to try in the interactive session:
|
|
123
110
|
|
|
124
|
-
|
|
|
111
|
+
| Type | What it does |
|
|
125
112
|
|---|---|
|
|
126
|
-
|
|
|
127
|
-
| `
|
|
128
|
-
|
|
|
129
|
-
|
|
|
130
|
-
|
|
|
131
|
-
|
|
|
132
|
-
| `/loop`, `/goal` autonomous loop, cron/scheduler | 12.5 |
|
|
133
|
-
| Warm subagent pool (`--warm-subagents`) | 12.6 |
|
|
134
|
-
| HTML export and `/share`, `/learn`, canvas, `--team`, voice, telemetry, version check | 12.7 |
|
|
135
|
-
|
|
136
|
-
Known parity gaps: tasks 10.2a/b/c/d/f/g, 10.4c and 10.5 pass Level 1 but not Level 2. The
|
|
137
|
-
default-bundle system prompt in hoocode also advertises the DocSearch self-knowledge tool
|
|
138
|
-
from 12.4, so model requests differ in that one block.
|
|
139
|
-
|
|
140
|
-
The plan and its rationale are in
|
|
141
|
-
[`archive/docs/ts-to-rust-migration.md`](archive/docs/ts-to-rust-migration.md)
|
|
142
|
-
(§0 status, §9 phases), and the handoff log is in `archive/migration/PROGRESS.md`. To resume, take a
|
|
143
|
-
deferred task out of `deferred` and say "continue migration" (see `CLAUDE.md`).
|
|
113
|
+
| `/model` | Pick a model (Ctrl+P cycles through your favourites) |
|
|
114
|
+
| `/mode` | Switch between ask, plan, build and debug |
|
|
115
|
+
| `/resume` | Reopen an earlier session in this folder |
|
|
116
|
+
| `@path/to/file` | Attach a file to your message |
|
|
117
|
+
| `/hotkeys` | Show the keyboard shortcuts |
|
|
118
|
+
| `/settings` | Change settings |
|
|
144
119
|
|
|
145
|
-
|
|
120
|
+
One-shot and scripted use:
|
|
146
121
|
|
|
147
122
|
```bash
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
hoocode
|
|
151
|
-
hoocode
|
|
123
|
+
hoocode -p "Summarize this repo" # print the answer and exit
|
|
124
|
+
hoocode -p --mode json "List the TODOs in src/" # JSON event stream
|
|
125
|
+
hoocode --model anthropic/claude-sonnet-4-5 "Review the last commit"
|
|
126
|
+
hoocode --continue "And now fix the first one" # continue the last session
|
|
127
|
+
hoocode --tools Read,CodeSearch -p "Review src/" # read-only run
|
|
128
|
+
hoocode --mode rpc # JSON-RPC over stdin/stdout
|
|
152
129
|
```
|
|
153
130
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
131
|
+
Plugins add skills, subagents and MCP servers. Add a git marketplace, then install
|
|
132
|
+
from it, from the shell or with `/plugin` in a session:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
hoocode plugin marketplace add <git-url-or-owner/repo>
|
|
136
|
+
hoocode install <plugin>@<marketplace> # --scope project for this repo only
|
|
137
|
+
hoocode list
|
|
138
|
+
```
|
|
160
139
|
|
|
161
|
-
|
|
140
|
+
`hoocode --help` lists every flag and the provider environment variables;
|
|
141
|
+
`hoocode --list-models [search]` lists the models it knows.
|
|
162
142
|
|
|
163
|
-
|
|
143
|
+
## Configuration
|
|
164
144
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
- `Merge Release` — auto-releases PRs labeled `rust:patch`, `rust:minor`, or `rust:major`.
|
|
168
|
-
- `Build binaries` — cross-compiles the `hoocode` binary for Linux, macOS (Intel/Apple Silicon), and Windows.
|
|
145
|
+
Everything hoocode keeps lives in **`~/.hoocode`**. Set `HOOCODE_CODING_AGENT_DIR` to
|
|
146
|
+
move it.
|
|
169
147
|
|
|
170
|
-
|
|
148
|
+
| File or folder | What it holds |
|
|
149
|
+
|---|---|
|
|
150
|
+
| `~/.hoocode/settings.json` | Global settings (`/settings` edits it) |
|
|
151
|
+
| `.hoocode/settings.json` | Per-project settings, merged over the global ones |
|
|
152
|
+
| `~/.hoocode/auth.json` | Logins and keys saved by `/login` |
|
|
153
|
+
| `~/.hoocode/models.json` | Your own providers and models (for example a local OpenAI-compatible server) |
|
|
154
|
+
| `~/.hoocode/hoo-config.json` | Agent modes and tool approval rules (`auto_allow`) |
|
|
155
|
+
| `~/.hoocode/skills/`, `.hoocode/skills/` | Skills, global and per project |
|
|
156
|
+
| `~/.hoocode/themes/` | Custom themes |
|
|
157
|
+
| `~/.hoocode/sessions/` | Saved sessions, one JSONL file each, in a folder per project (`HOOCODE_CODING_AGENT_SESSION_DIR` or `--session-dir` moves them) |
|
|
158
|
+
| `~/.agents/mcp.json`, `.agents/mcp.json` | MCP servers, global and per project (`/mcp` shows their state) |
|
|
159
|
+
| `~/.agents/plugins/`, `.agents/plugins/` | Plugins, user and per project (`hoocode install`, `hoocode list`, or `/plugin` in a session) |
|
|
160
|
+
| `AGENTS.md` or `CLAUDE.md` | Project instructions, read from the working folder and its parents |
|
|
161
|
+
|
|
162
|
+
Because sessions are saved as files, you can resume, fork or export
|
|
163
|
+
them (`/export <file>.jsonl`). `--no-session` keeps a run ephemeral, and `--offline`
|
|
164
|
+
turns off startup network calls such as the version check.
|
|
165
|
+
|
|
166
|
+
## Documentation
|
|
167
|
+
|
|
168
|
+
- [`docs/maps/ui.md`](docs/maps/ui.md): the screen, pickers, slash commands and keys,
|
|
169
|
+
and where each lives in the code
|
|
170
|
+
- [`docs/maps/packages.md`](docs/maps/packages.md): every crate in the workspace and
|
|
171
|
+
what it does
|
|
172
|
+
- [`docs/design/`](docs/design/README.md): design notes and the plan for what is built next
|
|
173
|
+
- [`docs/design/distribution.md`](docs/design/distribution.md): how releases reach users
|
|
174
|
+
- [`CHANGELOG.md`](CHANGELOG.md): what changed (also `/changelog` inside hoocode)
|
|
175
|
+
|
|
176
|
+
## Contributing
|
|
177
|
+
|
|
178
|
+
Bug reports, ideas and pull requests are welcome. Start with
|
|
179
|
+
[CONTRIBUTING.md](CONTRIBUTING.md): it covers the dev loop (fmt, clippy, nextest),
|
|
180
|
+
where tests go and how releases work. Please read the
|
|
181
|
+
[code of conduct](CODE_OF_CONDUCT.md), and report security problems privately as
|
|
182
|
+
described in [SECURITY.md](SECURITY.md).
|
|
183
|
+
|
|
184
|
+
If hoocode is useful to you, a star on the repo helps other people find it.
|
|
185
|
+
|
|
186
|
+
## Credits
|
|
187
|
+
|
|
188
|
+
hoocode began as a fork of [`pi-mono`](https://github.com/badlogic/pi-mono) by
|
|
189
|
+
Mario Zechner, which is MIT-licensed. Its copyright notice is kept in [LICENSE](LICENSE).
|
|
190
|
+
Thanks to Mario and the upstream contributors.
|
|
191
|
+
|
|
192
|
+
## License
|
|
193
|
+
|
|
194
|
+
MIT, see [LICENSE](LICENSE).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kolisachint/hoocode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "HooCode, the terminal coding agent (Rust build)",
|
|
5
5
|
"bin": {
|
|
6
6
|
"hoocode": "bin/hoocode.js",
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"node": ">=18"
|
|
14
14
|
},
|
|
15
15
|
"optionalDependencies": {
|
|
16
|
-
"@kolisachint/hoocode-darwin-arm64": "0.
|
|
17
|
-
"@kolisachint/hoocode-darwin-x64": "0.
|
|
18
|
-
"@kolisachint/hoocode-linux-arm64": "0.
|
|
19
|
-
"@kolisachint/hoocode-linux-x64": "0.
|
|
16
|
+
"@kolisachint/hoocode-darwin-arm64": "0.2.0",
|
|
17
|
+
"@kolisachint/hoocode-darwin-x64": "0.2.0",
|
|
18
|
+
"@kolisachint/hoocode-linux-arm64": "0.2.0",
|
|
19
|
+
"@kolisachint/hoocode-linux-x64": "0.2.0"
|
|
20
20
|
},
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"repository": {
|