T-Hermes is an experimental fork of T3 Code with Hermes Agent added as a provider.
Hermes is a serious coding agent, but the usual ways to talk to it are not ideal for long coding sessions. The TUI works. Telegram, Discord, WhatsApp, and the other channels are useful when you want to ping an agent from somewhere else. But they do not feel like a real coding workspace.
T3 Code already had the shape this needed: projects, threads, approvals, tool output, and a desktop app that feels closer to Codex or Claude Code than a chat bot. T-Hermes keeps that shape and adds Hermes beside the other agents.
This is a fork, not an official T3 Code release and not an official Hermes release. Credit where it is due: the foundation is the T3 team's open-source T3 Code app, and the agent is Hermes by the Hermes/Nous Research team.
- Hermes appears as a provider next to Codex, Claude, Cursor, and OpenCode.
- Local Hermes works through ACP by default.
- Gateway mode adds Hermes slash commands, skills, model discovery, sessions, reasoning controls, and context usage.
- Remote Hermes works over SSH against a normal Hermes install on another machine.
- Hermes Profiles can be added as separate provider choices, each with its own
HERMES_HOME. - Hermes uses its own local config and auth. The app does not edit
~/.hermes. - T-Hermes does not modify Hermes Agent source, install plugins, or rewrite Hermes config.
- Basic Hermes health checks run with
hermes --version.
For local use, install these on the Mac running T-Hermes:
gitbunnodehermes
Check Hermes first:
hermes --versionIf that command works, Hermes is installed and T-Hermes should be able to use it.
If Hermes is installed but T-Hermes cannot find it later, get the full path:
command -v hermesThen put that path in the Hermes provider settings under Binary path.
Leave HERMES_HOME blank unless you intentionally use a non-default Hermes home. By default, Hermes should use its normal local state, usually under ~/.hermes.
For Remote Hermes over SSH, the remote machine needs:
- SSH access from this Mac.
- Hermes already installed and working there.
- A remote project folder you want Hermes to work in.
Remote Hermes does not install T-Hermes on the remote machine and does not require the remote T3 backend.
No signed public DMG is attached to GitHub Releases yet.
Developer DMGs can be built locally, and a generated artifact should be published as a GitHub Release asset instead of committed to the repo.
There is no signed public DMG yet. For now, run it from source.
Open Terminal and run:
mkdir -p ~/t-hermes-work
cd ~/t-hermes-work
git clone https://github.com/BadTechBandit/t-hermes.git
cd t-hermes
bun install
bun run dev:desktopDo not run bun install before you cd t-hermes. It has to run inside the cloned repo.
Expected healthy desktop logs include:
Listening on http://127.0.0.1:13773
backend ready
main window created
When the app opens, choose Hermes as the provider and start a session.
Local Hermes uses the Hermes binary configured in provider settings. Leave the binary as hermes unless it is not on PATH.
ACP is the stable local fallback. Gateway mode is available for fuller Hermes features:
T3_HERMES_RUNTIME=gateway bun run dev:desktopGateway mode enables the live Hermes command catalog, skills, model options, sessions, reasoning controls, and better context reporting.
Gateway mode exposes Hermes' richer runtime surface inside T-Hermes:
- slash commands from the Hermes gateway catalog
- skills through the Hermes agent runtime
- model discovery and model switching where Hermes supports it
- reasoning controls where Hermes exposes them
- context usage updates for the context meter
ACP remains the stable fallback. Use gateway mode when you want the fuller Hermes feature set.
Hermes Profiles are separate Hermes homes with separate memory, state, and integrations.
In the app:
Settings -> Providers -> Hermes -> Hermes Profiles
Click refresh, then add the profile you want. T-Hermes creates a separate provider instance like Hermes - coder.
Under the hood, each profile launches Hermes with its own HERMES_HOME:
~/.hermes
~/.hermes/profiles/<name>
T-Hermes does not run hermes profile use and does not edit Hermes config.
Use this when Hermes is installed on another machine.
In the app:
Settings -> Connections -> Add environment -> Remote Hermes
Enter the SSH host, username, optional port, and the remote project folder. T-Hermes connects over SSH and starts Hermes' existing gateway on that machine.
Remote Hermes is separate from generic T3 remote environments. It does not run t-hermes, npm, npx, or a remote T3 backend.
SSH keys or an active SSH agent are recommended. The app handles host-key review before using a strict known-hosts file for Remote Hermes commands.
For a remote Hermes profile, set Profile home to:
~/.hermes/profiles/<name>
Leave Profile home blank for the remote default profile.
If your ~/.npmrc sets ignore-scripts=true as supply-chain protection (a sensible default given recent npm-ecosystem zero-days), Bun reads that file and skips lifecycle scripts even for packages this repo lists in trustedDependencies. The Electron binary will not download, and bun run dev:desktop will fail with:
Error: Electron failed to install correctly, please delete node_modules/electron and try installing again
Fix without weakening your global setting. Install with a per-command override:
npm_config_ignore_scripts=false bun installOr, if you already ran bun install and just want to recover, run Electron's installer directly:
node node_modules/electron/install.jsIf you do not have ignore-scripts=true set, you will not hit this and can skip the section.
If you want Claude Code, Codex, Hermes, or another local coding agent to do the setup for you, paste this:
Install and run T-Hermes from source on this Mac.
Use this repository:
https://github.com/BadTechBandit/t-hermes
Steps:
1. Check that `git`, `bun`, `node`, and `hermes` are available.
2. Run `hermes --version` and confirm Hermes is installed.
3. Create a normal workspace folder such as `~/t-hermes-work`.
4. Clone the repo into that folder.
5. Run `bun install` inside the cloned `t-hermes` repo.
6. Verify the Electron binary downloaded. Confirm `node_modules/electron/dist/Electron.app` exists. If it is missing (common when `~/.npmrc` sets `ignore-scripts=true` for supply-chain protection), recover with `node node_modules/electron/install.js`, or rerun the install as `npm_config_ignore_scripts=false bun install`. Do not silently disable the user's global `ignore-scripts` setting.
7. Run `bun run dev:desktop`.
8. If the app launches but Hermes is not detected, run `command -v hermes` and set that absolute path as the Hermes provider Binary path in the app settings.
9. For Remote Hermes, open Settings -> Connections -> Add environment -> Remote Hermes and enter the SSH host plus remote project folder.
10. For Hermes Profiles, open Settings -> Providers -> Hermes -> Hermes Profiles and add the profile as a separate provider. For a remote profile, set Profile home to `~/.hermes/profiles/<name>`.
Do not edit `~/.hermes`. T-Hermes should use the existing Hermes install and config. Do not install Hermes plugins.
If you already cloned the repo and want the latest source:
cd ~/t-hermes-work/t-hermes
git pull
bun install
bun run dev:desktopDeveloper/test DMGs can be built locally.
Apple Silicon:
bun run dist:desktop:dmg:arm64Intel Mac:
bun run dist:desktop:dmg:x64These builds are unsigned unless you set up Apple signing and notarization. macOS may warn before opening them.
Do not commit generated DMG/ZIP files. The release/ folder is ignored. Publish release artifacts through GitHub Releases.
Auto-updates are disabled in this fork until T-Hermes has its own signed release channel. That avoids accidentally pulling official T3 Code updates into this fork.
This project tracks T3 Code as an upstream source. The intended maintenance model is:
official T3 Code -> periodic manual merge -> T-Hermes -> T-Hermes releases
Remote layout:
upstream -> https://github.com/pingdotgg/t3code.git
origin -> https://github.com/BadTechBandit/t-hermes.git