Get Started

Hash is a shell. It just happens to have an agent on speed dial.

Step 0: Accept the deal

This is an early-stage project with breaking changes.
If you want a polished tool, you should probably wait.
If you want a sharp experiment, hi.

Tested on

PlatformTerminalAgentStatus
macOSGhosttyClaude Code (ACP)Primary testing environment

Other platforms (Linux, Windows), terminals, and agents may work but are untested. SSH is not supported — Hash is designed for local terminal use only.

Step 1: Install

Choose the method that works best for you.

Homebrew (Recommended)

brew tap tfcace/hash
brew install hash

Build from source

Prerequisites: Go 1.23+, C compiler (for SQLite), Git.
On Linux, you also need X11 dev libraries (libx11-dev) for clipboard support.

git clone https://github.com/tfcace/hash.git
cd hash
go build -o hash ./cmd/hash

Move hash to somewhere in your PATH:

mv hash ~/.local/bin/
# or
sudo mv hash /usr/local/bin/

Verify

hash --version

Step 2: Configure an agent

Hash is agent-agnostic: ACP (stdio) or HTTP.

Create ~/.config/hash/config.toml with one of these:

~/.config/hash/config.toml (ACP/stdio)
[agent]
transport = "stdio"
command = "claude"
~/.config/hash/config.toml (HTTP)
[agent]
transport = "http"
url = "http://localhost:11434/api/generate"
model = "codellama:13b"

Step 3: Use ?? anywhere

Whole command:

?? show me the 10 biggest files in this folder

Pipe:

cat logs.txt | ?? summarize the failure modes

Single argument (inline fill):

git log --sort-by=?? most recent first

Step 4: Control context (Ctrl+P)

Before you send anything to the agent, open the context picker and choose what goes in. Rule of thumb: send less than you think. You can always add more.

Step 5: Let it learn the boring fixes

If you keep doing the same "permission denied → chmod +x" dance, Hash will eventually stop making you dance.

Shell integration

Hash emits shell integration escape sequences automatically — no configuration needed.

  • OSC 133 — Marks prompt boundaries for easy navigation between commands (jump to previous/next prompt)
  • OSC 7 — Reports working directory so new tabs/panes inherit your location

Supported terminals: Ghostty, iTerm2, Kitty, WezTerm, Windows Terminal, VS Code integrated terminal. Terminals without support simply ignore these sequences.