Native Shell
Native Shell: AI-generated UI, native in your app, on every platform. Apps on iOS, Android, macOS, Windows and Linux, GPUI apps and web pages load signed, sandboxed TSX modules at run time and draw th
An agent REPL for use with Ollama service with local large language models or publicai.co's Abertus.
Developer toolsHTML · GoGitHub @rsdoielOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Harvey is an agent REPL written in Go and designed to use an Ollama (or hailo-ollama) server to access language models locally. It is a terminal based application.
The Harvey name was inspired by the play of that name by Mary Chase. I saw parallels between the story Harvey and my personal language model agent. Many people think of agents only in the context of very big companies. I think small models running on small or tiny computers are an opportunity. Harvey, is a small agent for small and tiny computers and is a play on a mythic creature. Harvey is a Púca, a software Púca. Harvey can be fun for those who take time for it. It runs on a little computers. Have an adventure and some fun with Harvey.
Harvey is experimental — a working proof of concept, not production-ready software. Letting a probabilistic model direct command execution is an inherently risky attack surface; Harvey mitigates this with safe mode, workspace sandboxing, permission checks, audit logging, and security reviews with each release, but the risk is never zero. Don't use Harvey where the risks might endanger your data, people, or planet. See SECURITY.md for details.
@mention@mention and model aliasing; routing feedback shown in spinnerHARVEY.md provides a customizable system prompt per workspace[ctx: N%] in spinner when approaching the model's context window.spmd) files — replay, continue, or mine them for memorieswrite_file: gofmt, clang-format, black, rustfmt, prettier, and built-in Pascal/Oberon/Basic formatterssftp://, scp://, http://, https:// URIsollama pull qwen2.5-coder:7b./installer.shinstaller.ps1 in PowerShellharveyharvey > /model use
harvey > /read LICENSE
harvey > /help
See Getting Started and Installation for detailed instructions.
Harvey runs on:
version: 0.0.19
status: active
released: 2026-10-10
Behaviour changes, see CHANGES.md upgrade notes: llama.cpp models are looked for in llama.cpp's cache ($LLAMA_CACHE, else ~/.cache/llama.cpp) and ~/Models is for llamafiles only, so set llamacpp.models_dir to keep the old directory (harvey DR-0031, proposed); skills.catalog is off by default (set skills: catalog: full to restore it); the command line now beats harvey.yaml for --llamafile-url, --llamafile-dir, -r, --record-file, --resume, --continue, --replay, --replay-output and --replay-continue as well as --ollama and -m, and HARVEY_LLAMAFILE_DIR beats llamafile.models_dir
A chat stream that ends before its final chunk is an error (ErrStreamTruncated, exit 74) instead of an empty reply recorded as a success
Hailo (AI HAT+ 2) is an engine beside Ollama (harvey DR-0030): a hailo: section in harvey.yaml, card and server detected apart, engine/model names (a bare name on both engines asks, or is exit 2 unattended), the catalog shown as not pulled with /model pull [--yes] NAME, and a capability table so harvey stops sending tools or asking for embeddings where Hailo has none
Per-model prompt limits: /model limit, the system prompt and history fitted to the limit, a turn over it refused before sending, and a failed turn retried on smaller prompts that teaches the limit; the model cache is keyed by engine and model
/memory mine reads a session too large for the model in parts, records an empty session as empty, and remembers a model that failed on a session so auto-mine does not retry it; a RAG retrieval failure is reported once per session instead of silently
harvey completion bash|powershell [-install] for shell completion of verbs, options and help topics
A write offer no longer treats a command, end of input or arbitrary text as an answer; piping /exit used to create a file named exit
Switching to a llama.cpp model mid-session keeps the log and records the switch, as the Ollama paths already did
--debugmake test-models runs live model tests and skips a missing model system with the reason; make build no longer runs cmt, make generate does
knowledge bumped to the released v0.0.20