https://github.com/jasonish/henri
A simple coding agent 🐕
https://github.com/jasonish/henri
agent ai cli coding-assistant developer-tools linux rust tui
Last synced: 2 months ago
JSON representation
A simple coding agent 🐕
- Host: GitHub
- URL: https://github.com/jasonish/henri
- Owner: jasonish
- License: mit
- Created: 2025-12-11T05:19:16.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-01-05T03:55:29.000Z (3 months ago)
- Last Synced: 2026-01-05T10:28:24.971Z (3 months ago)
- Topics: agent, ai, cli, coding-assistant, developer-tools, linux, rust, tui
- Language: Rust
- Homepage: https://codemonkey.net
- Size: 1.42 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Henri 🐕
This is an LLM coding assistant. Mostly an experiment to see if I
could vibe code a vibe coding tool, and it turns out you can. Named
after my Golden Retriever after hearing that AI coding agents were
much like letting a Golden Retriever code.
There is no way this tool can keep up with the progress of Claude Code
or OpenCode, but sometimes I just prefer its simplicity.
Henri remains simple. It executes one task at a time serially, providing
verbose output so you can see exactly what's going on. It uses no
sub-agents or background tasks. In some ways, I prefer this to
what the more advanced agents are doing these days.
## Features
### Multi Provider / Multi Model
Built-in support for the following providers:
- GitHub Copilot
- Anthropic Claude Pro/Max
- OpenAI ChatGPT Pro
- Google Antigravity
- OpenCode Zen
- OpenAI Compatible APIs (like Z.ai)
- OpenRouter
### Sandboxing
Henri has three security modes:
- **Read-Write (RW)**: Tools and shell commands can write only inside
the current directory (and children), plus `/tmp`. This is the
default.
- **Read-Only (RO)**: Tools and shell commands cannot write files at
all.
- **YOLO**: No sandbox restrictions—tools and shell can write anywhere.
Switch modes with `/read-write`, `/read-only`, `/yolo`, or `Ctrl+X` to
cycle through them. Start in read-only mode with `henri cli --read-only`.
Sandboxing uses Linux Landlock; on unsupported systems, restrictions
are best-effort.
## Installation
Currently, the only way to install is with Cargo:
```
cargo install --locked --git https://github.com/jasonish/henri
```
This will install to `~/.cargo/bin`. Ensure that directory is in your
`PATH`, or move the binary after installation:
```
mv ~/.cargo/bin/henri ~/.local/bin/henri
```
## Running
```
henri
```
On first start, a free model will be used; however, connecting to a
provider is recommended.
## Adding a Provider
Henri supports multiple AI providers. Add one with:
```
henri provider add
```
To remove a provider:
```
henri provider remove
```
Configuration is stored in `~/.config/henri/config.toml`.