Skip to content
suriyadi15Public

About

Self-hosted web dashboard for your code projects and AI coding agents (Claude Code, Codex, Gemini CLI, OpenCode and more). One executable or Docker container; sessions keep running when you close the tab.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

HermitHub

A self-hosted web dashboard for your code projects and AI coding agents — Claude Code, Codex CLI, Gemini CLI, OpenCode, GitHub Copilot CLI and more — installed as a single executable on Linux or macOS, or as a Docker container. Open it from any browser (phone included), start agent sessions in your projects, and close the tab: sessions keep running on the server.

Agents, their logins, GitHub access and git settings are all set up from the dashboard.

Website and docs: hermithub.pages.dev

Sponsor Trakteer

Features

  • Projects: create (empty folder, git init or git clone), rename, move to trash, restore. Star favorites to keep them at the top; hide projects you no longer use and bring them back any time.
  • Agent sessions, several at once per project, in a web terminal (tmux under the hood):
    • Claude Code, Codex CLI, Gemini CLI, OpenCode, GitHub Copilot CLI, Qwen Code, Crush — pick a permission mode per session, continue the last conversation.
    • Claude Remote Control: drive a session from claude.ai/code or the Claude mobile app.
    • Plain bash terminal in the project folder.
  • Settings in the browser: install / update / log in to each agent, or paste an API key; log in to GitHub (device code or token); git name and email; SSH key for other git servers.
  • Monitoring: active / waiting / exited status, CPU and RAM per session, last output lines, server load.
  • Files: file tree, Monaco editor (Ctrl+S), quick open (Ctrl+P), search across files, upload / download.
  • Git: stage, commit, push, pull, branches, stash, diffs, recent commits.
  • Parallel tasks with git worktrees: give each task its own folder and branch, run an agent in each, switch the file tree and Git panel between them, then merge back and clean up.
  • Mobile friendly: bottom navigation, a text box for long prompts, sticky Ctrl, arrow keys, history scrolling.

How it works

The browser talks to a small Bun server, and every agent runs inside a tmux session on that server, so it keeps running when you close the tab. The server runs either as a standalone executable (a user service on your machine) or in a Docker container; the diagram shows the Docker setup.

HermitHub architecture

What happens when you start a session and come back later:

Life of an agent session

  • Two ways to run it. The standalone executable needs only tmux and git and uses your own user account. The Docker image keeps agents in a container, and everything in ./data.
  • Sessions are tmux sessions. Closing the browser or losing your connection does not stop them, and neither does restarting the standalone service. Restarting the Docker container does, but you can pick up conversations again with Resume.
  • Every API and terminal request needs a logged-in session and must come from an allowed origin.

The diagrams are rendered by mermaid.ink from the Mermaid sources in docs/diagrams; the source layout is described in docs/development.md.

Quick start

On Linux (x86_64 / arm64) or macOS, no Docker needed:

curl -fsSL https://raw.githubusercontent.com/suriyadi15/hermithub/main/install.sh | bash

The installer detects your OS and CPU, installs tmux and git if they are missing (after asking), downloads the hermithub executable to ~/.local/bin and runs it as a user service (systemd on Linux, launchd on macOS). Then it prints a link like http://localhost:8787/setup?token=…. Open it, choose a password, then go to Settings to install an agent and connect GitHub.

No URL, or want it on your phone? Run hermithub tunnel for a public https://….trycloudflare.com address (no account or domain needed). Set a strong password and 2FA first, see Remote access.

Prefer Docker? It keeps agents isolated from the host, and on a server with a domain name it gets you HTTPS with automatic certificates:

curl -fsSL https://raw.githubusercontent.com/suriyadi15/hermithub/main/install.sh | bash -s -- --docker
curl -fsSL https://raw.githubusercontent.com/suriyadi15/hermithub/main/install.sh | bash -s -- --docker --domain hub.example.com

All options, service management and uninstalling: docs/installation.md.

No server? Deploy the image on a hosting platform, it needs one volume (docs/one-click-deploy.md):

Deploy to Render

Or let your AI agent do it: install the HermitHub skill (Claude Code: /plugin install hermithub --marketplace suriyadi15/hermithub) and ask "Install HermitHub on this machine".

Docker by hand is just a compose file:

mkdir hermithub && cd hermithub
curl -fsSLO https://raw.githubusercontent.com/suriyadi15/hermithub/main/docker-compose.yml
echo "PUID=$(id -u)" > .env && echo "PGID=$(id -g)" >> .env
docker compose up -d
docker compose logs hermithub   # shows the setup link

Updating

HermitHub checks for new releases and shows them in Settings → Updates. The standalone executable updates itself from there with one click, or with hermithub update in a terminal. Automatic updates can be switched on or off in Settings or with hermithub auto-update on|off. See docs/installation.md.

Re-running the installer also updates whichever install it finds. For Docker, run this in the install folder:

docker compose pull && docker compose up -d

Updating the standalone executable keeps running sessions. Updating the Docker container stops them. Conversations are kept either way; continue them with Resume on the project page. Installed agents live in the data folder and update themselves (or use Update in Settings).

Where things are stored

Standalone: settings in ~/.config/hermithub/env, database in ~/.hermithub, projects in ~/projects. Agents and logins are those of your user (~/.local, ~/.claude, ~/.config/gh…).

Docker: everything is in ./data next to docker-compose.yml, which is the home folder of the container user and laid out the same way:

Folder Contents
data/projects Your projects
data/.hermithub Dashboard database (password, settings, session history)
data Installed agents, their logins and history, GitHub CLI login, git config, SSH keys

Back up data/ to back up a Docker install. See docs/configuration.md to put projects somewhere else or share folders with the host.

Documentation

Security

The dashboard gives full shell access to your user account (standalone) or the container (Docker), including your agent and GitHub credentials. By default it only listens on 127.0.0.1. Expose it only over HTTPS, with a strong password, and ideally behind an extra login layer such as Cloudflare Access or a VPN. Details in docs/security.md.

Stack

Part Technology
Runtime Bun, Node.js (for npm-based agents)
Backend Elysia, SQLite (bun:sqlite), tmux, Bun's built-in PTY
API client Eden Treaty (types straight from the backend)
Frontend React 19, Vite, React Router, TanStack Query
UI Tailwind CSS v4, shadcn/ui (Radix), lucide-react, sonner
Terminal / editor xterm.js / Monaco

Contributing

Issues and pull requests are welcome — see CONTRIBUTING.md.

License

MIT

About

Self-hosted web dashboard for your code projects and AI coding agents (Claude Code, Codex, Gemini CLI, OpenCode and more). One executable or Docker container; sessions keep running when you close the tab.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages