{"id":49624796,"url":"https://github.com/aduermael/herm","last_synced_at":"2026-05-05T05:03:55.903Z","repository":{"id":342126804,"uuid":"1171802675","full_name":"aduermael/herm","owner":"aduermael","description":"Terminal-native AI coding agent running in containers.","archived":false,"fork":false,"pushed_at":"2026-05-02T21:01:10.000Z","size":9072,"stargazers_count":189,"open_issues_count":13,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-05-02T21:27:24.322Z","etag":null,"topics":["ai","ai-agents","coding-agent","containerization","sandbox","terminal"],"latest_commit_sha":null,"homepage":"https://hermagent.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aduermael.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-03T16:16:24.000Z","updated_at":"2026-04-30T12:42:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/aduermael/herm","commit_stats":null,"previous_names":["aduermael/cpsl","aduermael/herm"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/aduermael/herm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aduermael%2Fherm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aduermael%2Fherm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aduermael%2Fherm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aduermael%2Fherm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aduermael","download_url":"https://codeload.github.com/aduermael/herm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aduermael%2Fherm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32636108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"online","status_checked_at":"2026-05-05T02:00:06.033Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-agents","coding-agent","containerization","sandbox","terminal"],"created_at":"2026-05-05T05:03:52.322Z","updated_at":"2026-05-05T05:03:55.893Z","avatar_url":"https://github.com/aduermael.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# herm\n\n[![Tests](https://github.com/aduermael/herm/actions/workflows/test.yml/badge.svg)](https://github.com/aduermael/herm/actions/workflows/test.yml)\n[![Prompt Length](https://github.com/aduermael/herm/actions/workflows/prompt-length.yml/badge.svg)](https://github.com/aduermael/herm/actions/workflows/prompt-length.yml)\n[![CI Checks](https://github.com/aduermael/herm/actions/workflows/ci-checks.yml/badge.svg)](https://github.com/aduermael/herm/actions/workflows/ci-checks.yml)\n\nA coding agent CLI that's containerized by default. Every command runs inside a Docker container, nothing touches your host. No approval prompts, no \"are you sure?\" dialogs. Just let it work.\n\n![demo](img/demo.gif)\n\n## Why herm?\n\n**Containerized by default** — The agent runs inside Docker containers with full control: installing packages, editing files, running builds. Your host machine stays untouched. No permission prompts, ever.\n\n**Multi-provider** — Use Anthropic, OpenAI, Gemini, or Grok. Switch models on the fly.\n\n**Self-building dev environments** — Need Python but it's not installed? herm extends its own container by writing Dockerfiles dynamically. Dev environments are scoped per project (git repo) and survive container restarts — the rebuilt image persists across sessions.\n\n**100% open-source** — Everything is open, including the system prompts. No hidden instructions, no black boxes. Read them, fork them, change them.\n\n## Requirements\n\n- macOS or Linux (arm64 and amd64)\n- Docker installed and running\n\n## Install\n\n### Quick install\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/aduermael/herm/main/install.sh | bash\n```\n\n### Homebrew\n\n```sh\nbrew tap aduermael/herm\nbrew install herm\n```\n\n### From source\n\nRequires Go 1.24+.\n\n```sh\ngit clone https://github.com/aduermael/herm\ncd herm\ngo build -o herm ./cmd/herm\n./herm\n```\n\n## Quick Start\n\n```sh\nherm\n```\n\nYou'll need an API key for at least one provider (Anthropic, OpenAI, Grok, or Gemini) — add it via the CLI on first run.\n\n## Roadmap\n\nRough priority order — subject to change.\n\n1. **Credential-free third-party APIs** — let herm call any external API without ever seeing your credentials.\n2. **Benchmarks** — measure herm against Claude Code and other coding agents on standard coding tasks.\n3. **Skills \u0026 `herm.md`** — first-class skills and a project config file. Optional import from other agents' configs (e.g. `CLAUDE.md`).\n4. **PR review bot** — a herm bot that reviews pull requests.\n5. **Dynamic model list** — pick up newly released models without updating herm.\n\n## Project Structure\n\n```\nherm/\n├── cmd/\n│   ├── herm/                  Main application\n│   │   ├── prompts/           System prompt templates (embedded)\n│   │   └── dockerfiles/       Base container definition (embedded)\n│   └── debug/                 Debug utilities\n├── .herm/\n│   └── skills/                Skill definitions (e.g. devenv)\n├── img/                       Demo assets\n├── plans/                     Project planning docs\n├── go.mod\n├── LICENSE\n└── README.md\n```\n\n## Test\n\n```sh\ngo test ./...\n```\n\n## FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003eHow is it different from Claude Code?\u003c/summary\u003e\n\n\u003e Claude Code runs directly on your host and needs your approval for every potentially dangerous action. herm runs everything in containers, so the agent can act freely without risking your system. herm also supports multiple model providers and ships its system prompts in the open.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eHow is it different from OpenCode?\u003c/summary\u003e\n\n\u003e OpenCode is a great terminal AI assistant, but it runs on your host like most coding agents. herm's core idea is that containerization should be the default — not an afterthought. If the agent can't break anything, you don't need permission prompts.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eHow is it different from Pi Coding Agent?\u003c/summary\u003e\n\n\u003e [Pi](https://github.com/badlogic/pi-mono) focuses on extensibility through TypeScript plugins and a large ecosystem of community packages. herm takes a different bet: safety through containerization. Instead of asking users to manage permissions, herm sandboxes everything by default so the agent can operate autonomously.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWhat is the logo supposed to represent?\u003c/summary\u003e\n\n\u003e It's an hermit crab called Herm, short for Herman. It represents the hermetic nature of the agent — everything sealed inside its shell.\n\u003c/details\u003e\n\n## Dependencies\n\nherm is built on top of [langdag](https://langdag.com), a Go library for managing LLM conversations as directed acyclic graphs with multi-provider support. This project originally started as a way to dogfood langdag.\n\n## Community\n\nJoin the [Discord](https://discord.gg/WFjcymwtZU) to chat, ask questions, or share feedback.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faduermael%2Fherm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faduermael%2Fherm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faduermael%2Fherm/lists"}