TAG: a Hermes-based orchestration layer with patched TUI, profile routing, and OpenRouter/Codex workflows.
Project description
TAG
TAG is a standalone orchestration layer on top of Hermes. It packages the work done in this workspace into one installable CLI with:
- a bundled Hermes source snapshot (v0.16.0) for first-run provisioning
- managed Hermes bootstrap with full TAG branding
- shipped Hermes TUI patching and custom
tag-controlskin - profile-based master/worker orchestration (orchestrator, researcher, coder, reviewer)
- OpenRouter worker routing and Codex import/runtime support
- credential import from Claude Code, Gemini CLI, Continue.dev, and Mistral Vibe
- direct execution, Kanban execution, and benchmark history
Install
pip install tag-agent
This installs the tag command.
For npm:
npm install -g tag-agent
For pnpm:
pnpm add -g tag-agent
The npm package installs a thin Node launcher for tag. On first run it
creates an isolated Python runtime under ~/.tag/npm-runtime/<version>,
installs the bundled TAG Python package there, and then executes the same TAG
CLI. That means the npm path still requires Python >=3.11 and <3.14 on
PATH. The launcher will probe python3.13, python3.12, python3.11,
python3, and python in that order on Unix-like systems.
For a build artifact install:
python -m build
pip install dist/tag_agent-0.2.0-py3-none-any.whl
For an npm artifact check:
npm pack
First run
tag
Default behavior:
- create
~/.tag/config/tag.yamland the benchmark suite if missing - extract the bundled Hermes snapshot into
~/.tag/managed/hermes-agent-upstreamif needed - create a virtualenv for Hermes
- install Hermes with the required extras
- apply the TAG TUI patch
- install/build the Hermes TUI workspace
- bootstrap the default TAG profiles
- launch the orchestrator TUI
The same managed bootstrap now happens automatically for non-TUI commands that need Hermes, for example:
tag submit --task-type mixed --execution direct --prompt "Reply with exactly: smoke-ok"
tag benchmark --profile researcher --model-ref openrouter/deepseek/deepseek-v4-flash
tag model --profile orchestrator -- list
For those commands, TAG provisions Hermes on demand and skips the TUI build if
it is not needed, so npm is not required just to use submit/benchmark/model
flows.
If tag is started from a non-interactive context, it does not try to open the
TUI blindly. It exits with a clear message and tells you to use tag doctor,
tag setup, or tag tui from a real terminal.
If you want the setup step explicitly:
tag setup
tag tui
Main commands
tag
tag setup
tag doctor
tag bootstrap
tag status
tag assignments
tag models --profile researcher
tag openrouter-models --profile researcher --search gemini
tag set-model --profile reviewer --ref openrouter/deepseek/deepseek-v4-pro
tag submit --task-type mixed --execution direct --prompt "Reply with exactly: smoke-ok"
tag benchmark --profile researcher --model-ref openrouter/deepseek/deepseek-v4-flash
tag runs
tag import-codex --profile orchestrator --codex-home ~/.codex
tag import-claude --profile orchestrator
tag import-gemini --profile orchestrator
tag import-continue --profile orchestrator
tag import-mistral --profile orchestrator
tag chat --profile orchestrator -- --help
tag config --profile orchestrator -- edit
tag gateway --profile orchestrator -- start
tag kanban --profile orchestrator -- list
tag sessions --profile orchestrator -- list
tag skills --profile orchestrator -- list
tag plugins --profile orchestrator -- list
tag tools --profile orchestrator -- list
tag mcp --profile orchestrator -- list
tag logs --profile orchestrator -- --since 1h
tag dashboard --profile orchestrator -- --status
tag memory --profile orchestrator -- status
tag model --profile orchestrator -- list
tag profile -- list
tag completion --profile orchestrator -- zsh
tag prompt-size --profile orchestrator
tag update
tag hermes --profile orchestrator -- gateway start
tag tui --profile orchestrator
Persistence
TAG stores its managed state under ~/.tag by default:
config/tag.yamlconfig/benchmark-suite.yamlmanaged/hermes-agent-upstreamruntime/homeruntime/tag.sqlite3
Override the root with:
export TAG_HOME=/some/other/location
Notes
- The managed Hermes checkout remains Hermes internally; TAG is the packaged experience and command surface around it.
- TAG does not require a preinstalled Hermes checkout. By default it provisions
Hermes from a bundled source snapshot and only falls back to
git cloneif that snapshot is unavailable. - If TAG can already discover a valid local Hermes source checkout, it will reuse it automatically instead of forcing a second separate install.
- If a real Codex CLI home already exists with
auth.json, TAG imports that into the managed orchestrator profiles automatically during setup. tag import-claudedetectsANTHROPIC_API_KEY,~/.claude/.credentials.json, and~/.claude.jsonand writes the key into the target profile's.env.tag import-geminidetectsGEMINI_API_KEY,~/.config/gemini/credentials.json, and Gemini CLI'sapplication_default_credentials.json.tag import-continueparses~/.continue/config.jsonand extracts API keys for all configured model providers (Anthropic, OpenAI, Gemini, Mistral, etc.).tag import-mistralreads~/.config/mistral/credentialsor~/.mistral/credentialsand writesMISTRAL_API_KEYinto the target profile.- The shipped patch only touches Hermes TUI skin handling and profile-aware chrome.
- OpenRouter keys and Codex auth remain per-profile concerns.
- TAG currently targets Python
>=3.11and<3.14and expectsnpmfor full first-run bootstrap because Hermes' TUI workspace is built locally.gitis still recommended for Hermes features like worktrees and for refresh/update flows, but it is no longer required for the default bundled install path. tag updateis lifecycle-aware:- on a bundled Hermes checkout, it refreshes the managed runtime from the packaged snapshot and rebuilds it
- on a git-backed checkout, it delegates to Hermes' own update flow
- The npm distribution is a launcher wrapper around the Python package, not a separate Node reimplementation.
Command strategy
TAG currently has three layers of command surface:
- Native TAG orchestration commands
setup,doctor,bootstrap,route,submit,benchmark,runs
- Credential import commands
import-codex,import-claude,import-gemini,import-continue,import-mistral
- High-value managed Hermes wrappers
chat,gateway,kanban,model,profile,status,config,sessions,skills,plugins,tools,mcp,logs,dashboard,memory,completion,prompt-size,update,tui
- Full escape hatch
tag hermes -- ...
This means TAG does not reimplement all of Hermes. Instead, it owns the installation, profile layout, patching, orchestration, and default UX, while still letting you reach the underlying Hermes runtime when needed.
Release Checks
Before publishing, run:
pytest -q tests/test_controller.py
python -m build
npm pack
tag doctor
tag setup --json
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tag_agent-0.2.0.tar.gz.
File metadata
- Download URL: tag_agent-0.2.0.tar.gz
- Upload date:
- Size: 54.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fba3d17ea1f9da53b23606c11ed903eb40e9264b1d0dac24fda4ca47648615b
|
|
| MD5 |
3de5505783976767995b98a185358441
|
|
| BLAKE2b-256 |
7a4fd24730b8afaff959941a7b39983eb034b5b4647fd14b3d29b02bee12005e
|
File details
Details for the file tag_agent-0.2.0-py3-none-any.whl.
File metadata
- Download URL: tag_agent-0.2.0-py3-none-any.whl
- Upload date:
- Size: 54.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1a43cf208803f9575dd53c6a450fea4a42c121f7832c07ee4c9996c0b26be30
|
|
| MD5 |
0e72c9d88f9c375330df1ad23222898a
|
|
| BLAKE2b-256 |
749162fe389f3aed72bcbdba6c9672e57f07a09184f0bf5db37a73fe90edef3a
|