A workflow layer for AI coding CLIs: skills, project knowledge, delivery checks, safer config writes, and resumable execution.
Important
Looking for v2.x? The old Python line now lives in helloagents-archive. The v3 line is a full rewrite based on Node.js, Markdown rules, skills, and small runtime scripts.
- What HelloAGENTS Does
- Core Features
- Quick Start
- CLI Management
- Commands in Chat
- Project Knowledge Base
- Workflow and Delivery
- Configuration
- How Each CLI Is Integrated
- Verification
- FAQ
- Troubleshooting
- License
AI coding CLIs can move fast, but they can also stop at advice, skip checks, lose project context, or report completion before the work is really done.
HelloAGENTS adds a workflow layer on top of Claude Code, Gemini CLI, and Codex CLI. It helps the agent choose the right path, use task-specific quality skills, keep a project knowledge base, and verify work before delivery.
|
Without HelloAGENTS
|
With HelloAGENTS
|
| Problem | Without HelloAGENTS | With HelloAGENTS |
|---|---|---|
| Stops too early | Ends with suggestions | Continues into build, verify, and closeout |
| Quality is inconsistent | Depends on each prompt | 14 quality skills activate by task type |
| Context is scattered | Plans live in chat history | Project knowledge and plan files stay on disk |
| Completion is vague | Natural language says “done” | Delivery checks use state, evidence, and verification |
| Config writes are risky | CLI files can drift | Install, update, cleanup, and doctor flows check managed files |
HelloAGENTS ships 14 built-in skills. They are loaded only when the current stage needs them, so simple tasks stay light while complex work gets stricter checks.
| Skill | Focus |
|---|---|
hello-ui |
UI planning, design contracts, implementation mapping, visual validation |
hello-api |
API design, validation, error format, compatibility |
hello-security |
auth, secrets, permissions, injection risks |
hello-test |
TDD, coverage, edge cases, test structure |
qa-review |
unified quality review, verification commands, blocking fixes, delivery evidence, closeout |
helloagents |
command routing, workflow stage rules, project knowledge, and state coordination |
hello-errors |
error handling, logs, retry and recovery behavior |
hello-perf |
performance, caching, query and rendering risks |
hello-data |
database, migrations, transactions, indexes |
hello-arch |
architecture, boundaries, code size, maintainability |
hello-debug |
bug diagnosis and escalation when stuck |
hello-subagent |
subagent delegation and result integration |
hello-write |
documentation, reports, and written deliverables |
hello-reflect |
reusable lessons and knowledge updates |
All UI work first follows the shared UI quality baseline.
In host global mode, in initialized projects, or in explicit UI workflows, hello-ui adds deeper design-contract execution, design-system mapping, and visual validation on top of that baseline.
When visual evidence is required, HelloAGENTS records it in the current session artifacts/visual.json.
Commands run inside the AI CLI chat with a ~ prefix. The command skill is read directly; unrelated skills are not loaded unless the workflow needs them.
| Command | Purpose |
|---|---|
~idea |
Lightweight exploration and option comparison; does not write files |
~auto |
Chooses the main path and keeps going until delivery or a real blocker |
~plan |
Requirements, solution design, task breakdown, and plan package |
~build |
Implementation from the current request or an existing plan |
~prd |
Modern product requirements document through guided dimension-by-dimension exploration |
~loop |
Long-running entry; in Codex it prefers /goal -> ~auto -> ~qa |
~init |
Initialize the project workflow and sync project knowledge |
~test |
Write tests for a target module or recent change |
~qa |
Run the unified quality loop: review, verification commands, fixes, and closeout |
~commit |
Generate a conventional commit message and sync knowledge |
~clean |
Archive finished plans and clean temporary runtime files |
~help |
Show commands and current settings |
Compatibility aliases:
~do→~build~design→~plan~review→~qa
HelloAGENTS can create and maintain a project knowledge base under .helloagents/.
The knowledge base helps future turns understand the repo without re-discovering the same facts. It can store:
| File or directory | Purpose |
|---|---|
context.md |
project overview, stack, architecture, module index |
guidelines.md |
non-obvious coding conventions inferred from the repo |
verify.yaml |
verification commands such as lint, test, build |
CHANGELOG.md |
project-level change history |
DESIGN.md |
stable UI design contract when the project has UI work |
modules/*.md |
module-specific notes and lessons |
plans/<feature>/ |
active plan packages |
archive/ |
archived plan packages |
~init initializes the project workflow: it writes the project-level full carrier marker, prepares project state, and creates or updates the knowledge base.
Complex work can be stored as plan packages instead of a single paragraph in chat.
For ~plan, HelloAGENTS uses:
requirements.mdplan.mdtasks.mdcontract.json
For ~prd, HelloAGENTS also creates PRD files such as:
prd/00-overview.mdprd/01-user-stories.mdprd/02-functional.mdprd/03-ui-design.mdprd/04-technical.mdprd/05-nonfunctional.mdprd/06-i18n-l10n.mdprd/07-accessibility.mdprd/08-content.mdprd/09-testing.mdprd/10-deployment.mdprd/11-legal-privacy.mdprd/12-timeline.md
contract.json is used by the workflow to decide verification scope, reviewer/tester focus, optional advisor checks, and optional visual validation.
tasks.md also includes a Codex /goal entry. For long-running Codex work, use that prepared entry instead of giving /goal a raw product document. The default chain is /goal -> ~auto -> ~qa: Codex keeps the long-running continuation, ~auto executes the AFK work, and ~qa remains the final quality gate before closeout.
Long tasks need a small recovery snapshot, but one shared state file is not safe enough for concurrent work.
HelloAGENTS now resolves the current state file from state_path:
- with a stable or reusable session id:
.helloagents/sessions/<workspace>/<session>/STATE.md - before a reusable session id is available:
.helloagents/sessions/<workspace>/default/STATE.md
<workspace> is the current Git branch, detached-<sha> for a detached HEAD, or workspace for non-Git projects. <session> is the current project-local session token. .helloagents/sessions/active.json only keeps the latest active workspace/session mapping plus alias bridges, so the same CLI session stays in one directory and /resume can reuse it.
For project-local sessions, HelloAGENTS first uses stable host identifiers such as sessionId, conversationId, threadId, or HELLOAGENTS_NOTIFY_SESSION_ID. If the host only exposes a window or terminal id such as WT_SESSION, TERM_SESSION_ID, or WINDOWID, HelloAGENTS uses it only as a lightweight alias bridge and reuses the mapped session first instead of fanning out duplicate directories. If a session starts before a stable host identifier is available, HelloAGENTS can begin in default and keep reusing that same active directory after the same CLI session later exposes a stable identifier, instead of splitting into a second session directory.
STATE.md records where the current workflow stopped. It is not a universal memory file for every conversation. Codex /goal does not replace state_path, turn-state, or local evidence files; it only handles long-running continuation on the Codex side.
HelloAGENTS does not treat “tests passed” and “task complete” as the same thing. Delivery can also require plan coverage, task checklist status, review evidence, advisor evidence, and visual evidence.
Runtime state now stays intentionally small:
.helloagents/sessions/<workspace>/<session>/STATE.md.helloagents/sessions/<workspace>/<session>/runtime.json.helloagents/sessions/active.json.helloagents/sessions/<workspace>/<session>/artifacts/qa-review.json.helloagents/sessions/<workspace>/<session>/artifacts/advisor.json.helloagents/sessions/<workspace>/<session>/artifacts/visual.json.helloagents/sessions/<workspace>/<session>/artifacts/closeout.json- optional
.helloagents/sessions/<workspace>/<session>/events.jsonl ~/.codex/.helloagents/notify-state.jsonfor Codex-native closeout de-duplication only
STATE.md only keeps the human-readable recovery snapshot. runtime.json is machine-only and keeps the minimal runtime state. artifacts/*.json stays limited to structured receipts. events.jsonl remains opt-in trace output and stays off by default.
Project-local STATE.md is now materialized more lazily.
Standard runtime evidence and transient runtime state now expire after 72 hours. Long-running Codex goal flows still keep their 720-hour upper bound where the workflow explicitly needs it.
Delivery gate, guard, and QA gate messages use action-oriented wording such as processing path, closeout action, and visual validation action, so blocked flows show what to do next without turning executable steps into optional suggestions. Final closeout also enforces a single HelloAGENTS wrapper, so one reply does not emit duplicate closeout headers. That wrapper is now reserved for direct final-user delivery only. Intermediate reports, delegated task results, and sub-agent replies stay natural, and sub-agent stop hooks reject wrapped closeout replies.
The CLI manages host files explicitly:
installwrites only the selected target unless--allis usedupdaterefreshes the selected target or all targetscleanupremoves managed injections and linksuninstallperforms scoped cleanup before package removaldoctorreports drift in carriers, links, hooks, config entries, plugin roots, cache copies, versions, and real Claude/Gemini global install artifacts; for Codex, it also surfaces nativecodex doctoroutput when available- Codex managed
notify = ["helloagents-js", "codex-notify"]stays portable, anddoctor,cleanup, anduninstallalso recognize wrapped--previous-notifychains used by Codex App / Computer Use - per-host mode tracking is written only after host setup succeeds, and failed native global cleanup keeps the host tracked as
globalinstead of silently layering standby on top - Windows
.cmd/.batlifecycle calls now run through an explicit command wrapper, so host installs, branch switching, and doctor flows do not emit NodeDEP0190shell deprecation warnings
npm install -g helloagentsIf another executable named helloagents already exists in your PATH, use the stable managed-entry alias:
helloagents-jsBy default, postinstall installs the package command, initializes ~/.helloagents/helloagents.json, and syncs runtime files to ~/.helloagents/helloagents. No host CLI is deployed unless you set HELLOAGENTS=target[:mode], such as HELLOAGENTS=codex:global.
Use standby mode for selected projects and explicit activation:
helloagents install codex --standby
helloagents install --all --standbyUse global mode when you want full rules everywhere:
helloagents --global
helloagents install --all --globalAfter reinstalling, refreshing, or switching modes, restart the target AI CLI or open a new session; already running sessions do not reload injected rules automatically.
Type:
~help
You should see the available chat commands and the current settings.
Initialize the project workflow:
~init
helloagents --standby
helloagents --global
helloagents install codex --standby
helloagents install --all --global
helloagents update codex
helloagents cleanup claude --global
helloagents uninstall gemini
helloagents switch-branch beta
helloagents switch-branch beta claude --global
helloagents doctor
helloagents doctor codex --json
helloagents codex goals status
helloagents codex goals enableSupported targets:
claudegeminicodex--all
If you omit --standby or --global, HelloAGENTS first reuses the tracked/detected mode for that CLI, then falls back to standby.
Use these when you do not want to depend on the helloagents binary being available during package updates. In HELLOAGENTS=target[:mode], target can be all, claude, gemini, or codex; mode can be standby or global. For install, an omitted mode is treated as standby. For update, cleanup, uninstall, and branch switching, an omitted mode is forwarded unchanged so HelloAGENTS can reuse the tracked or detected mode for that CLI first. If you do not provide HELLOAGENTS, the one-shot install scripts now behave like plain package install: they install or update the package only and do not auto-deploy any host CLI. For a custom tarball or package spec, set HELLOAGENTS_PACKAGE instead of HELLOAGENTS_BRANCH. For a guaranteed refresh of an already installed package, prefer npm explore -g helloagents -- npm run sync-hosts -- ... after the package command.
Host configs use the stable helloagents-js entrypoint and runtime root ~/.helloagents/helloagents, so Node global package paths can change without breaking managed hooks or Codex notify. Codex hooks use standalone ~/.codex/hooks.json instead of adding large hook blocks to config.toml, and Codex global plugin roots plus plugin cache now link back to that same stable runtime root. Claude Code global installs now use a dedicated local marketplace projection under ~/.helloagents/host-projections/claude-marketplace, and Gemini global extension packaging uses ~/.helloagents/host-projections/gemini, so host-specific packaging stays isolated from the shared runtime root.
macOS / Linux:
# Install to Codex in standby mode
HELLOAGENTS=codex npm install -g helloagents
# Install to Codex in global mode
HELLOAGENTS=codex:global npm install -g helloagents
# Update the package, then refresh Claude in standby mode
npm update -g helloagents
npm explore -g helloagents -- npm run sync-hosts -- claude --standby
# Switch to the beta branch, then refresh all CLIs in standby mode
npm install -g https://github.com/hellowind777/helloagents/archive/refs/heads/beta.tar.gz
npm explore -g helloagents -- npm run sync-hosts -- --all --standby
# Clean Gemini integration before package uninstall
npm explore -g helloagents -- npm run uninstall -- gemini --standby
npm uninstall -g helloagentsWindows PowerShell:
# Install to Codex in standby mode
$env:HELLOAGENTS="codex"; npm install -g helloagents
# Install to Codex in global mode
$env:HELLOAGENTS="codex:global"; npm install -g helloagents
# Update the package, then refresh Claude in standby mode
npm update -g helloagents
npm explore -g helloagents -- npm run sync-hosts -- claude --standby
# Switch to the beta branch, then refresh all CLIs in standby mode
npm install -g https://github.com/hellowind777/helloagents/archive/refs/heads/beta.tar.gz
npm explore -g helloagents -- npm run sync-hosts -- --all --standby
# Clean Gemini integration before package uninstall
npm explore -g helloagents -- npm run uninstall -- gemini --standby
npm uninstall -g helloagentsAfter the package is installed, you can also call its npm scripts directly:
npm explore -g helloagents -- npm run deploy:global
npm explore -g helloagents -- npm run sync-hosts -- --all --standby
npm explore -g helloagents -- npm run cleanup-hosts -- codex --standby
npm explore -g helloagents -- npm run uninstall -- --allFresh installs can still use HELLOAGENTS=target[:mode] directly. For update, branch switching, or any forced host re-sync of an already installed package, the explicit npm run sync-hosts step above is the deterministic path.
macOS / Linux:
# Install
HELLOAGENTS=codex curl -fsSL https://raw.githubusercontent.com/hellowind777/helloagents/main/install.sh | sh
# Update
HELLOAGENTS=claude:standby HELLOAGENTS_ACTION=update curl -fsSL https://raw.githubusercontent.com/hellowind777/helloagents/main/install.sh | sh
# Switch branch
HELLOAGENTS=all:global HELLOAGENTS_ACTION=switch-branch HELLOAGENTS_BRANCH=beta curl -fsSL https://raw.githubusercontent.com/hellowind777/helloagents/main/install.sh | sh
# Cleanup host integration without uninstalling the package
HELLOAGENTS=codex:standby HELLOAGENTS_ACTION=cleanup curl -fsSL https://raw.githubusercontent.com/hellowind777/helloagents/main/install.sh | sh
# Uninstall
HELLOAGENTS=gemini HELLOAGENTS_ACTION=uninstall curl -fsSL https://raw.githubusercontent.com/hellowind777/helloagents/main/install.sh | shWindows PowerShell:
# Install
$env:HELLOAGENTS="codex"; irm https://raw.githubusercontent.com/hellowind777/helloagents/main/install.ps1 | iex
# Update
$env:HELLOAGENTS="claude:standby"; $env:HELLOAGENTS_ACTION="update"; irm https://raw.githubusercontent.com/hellowind777/helloagents/main/install.ps1 | iex
# Switch branch
$env:HELLOAGENTS="all:global"; $env:HELLOAGENTS_ACTION="switch-branch"; $env:HELLOAGENTS_BRANCH="beta"; irm https://raw.githubusercontent.com/hellowind777/helloagents/main/install.ps1 | iex
# Cleanup host integration without uninstalling the package
$env:HELLOAGENTS="codex:standby"; $env:HELLOAGENTS_ACTION="cleanup"; irm https://raw.githubusercontent.com/hellowind777/helloagents/main/install.ps1 | iex
# Uninstall
$env:HELLOAGENTS="gemini"; $env:HELLOAGENTS_ACTION="uninstall"; irm https://raw.githubusercontent.com/hellowind777/helloagents/main/install.ps1 | iexThe shell and PowerShell wrappers now parse HELLOAGENTS once, keep plain package install/update behavior when no target is specified, clear lifecycle env before update, branch switching, and uninstall, and then run one explicit sync or cleanup path.
switch-branch installs the requested npm/GitHub ref first, then syncs host CLIs through npm scripts so it does not depend on the helloagents executable during updates:
helloagents switch-branch beta
helloagents switch-branch beta claude --global
helloagents branch beta --all --standbyUse normal npm commands when you only want to change the package and not sync host CLIs immediately:
npm install -g https://github.com/hellowind777/helloagents/archive/refs/heads/beta.tar.gz
npm update -g helloagents
npm explore -g helloagents -- npm run uninstall -- --all
npm uninstall -g helloagents| CLI | Files written or updated | Cleanup behavior |
|---|---|---|
| Claude Code | ~/.claude/CLAUDE.md, ~/.claude/settings.json, ~/.claude/helloagents -> ~/.helloagents/helloagents |
removes managed marker block, HelloAGENTS hooks/permissions, and symlink |
| Gemini CLI | ~/.gemini/GEMINI.md, ~/.gemini/settings.json, ~/.gemini/helloagents -> ~/.helloagents/helloagents |
removes managed marker block, HelloAGENTS hooks, and symlink |
| Codex CLI | ~/.codex/AGENTS.md, ~/.codex/config.toml, ~/.codex/hooks.json, ~/.codex/helloagents -> ~/.helloagents/helloagents, managed backups |
removes managed marker block, managed config keys, managed hooks, symlink, and the latest managed backup |
| CLI | Install method | Files involved |
|---|---|---|
| Claude Code | native plugin install | ~/.helloagents/host-projections/claude-marketplace, Claude Code plugin metadata/cache managed by the host |
| Gemini CLI | native extension install | ~/.helloagents/host-projections/gemini, ~/.gemini/extensions/helloagents |
| Codex CLI | native local-plugin chain | ~/.agents/plugins/marketplace.json, ~/plugins/helloagents/ -> ~/.helloagents/helloagents, ~/.codex/plugins/cache/local-plugins/helloagents/local/ -> ~/.helloagents/helloagents, ~/.codex/config.toml, ~/.codex/hooks.json, ~/.codex/helloagents -> ~/.helloagents/helloagents |
In global mode, HelloAGENTS now attempts the host-native install commands automatically. Claude Code uses the local marketplace projection, Gemini uses the local extension projection, and Codex keeps linking back to the same stable runtime root, so install, update, branch switching, mode switching, cleanup, and uninstall all refresh against one consistent runtime copy. If a host command is unavailable, run the same commands manually:
/plugin marketplace add "~/.helloagents/host-projections/claude-marketplace"
/plugin install helloagents@helloagents
gemini extensions link "~/.helloagents/host-projections/gemini"
For Claude Code, the CLI also tries the equivalent claude plugin marketplace add ... and claude plugin install ... commands. The marketplace is named helloagents, and the plugin is also named helloagents, so the install target is helloagents@helloagents. Restart the host CLI after a global install.
When you switch Claude or Gemini back to standby, HelloAGENTS first removes the native plugin or extension. If that cleanup fails, the host stays tracked as global instead of silently stacking standby on top.
Codex global mode is installed by HelloAGENTS automatically through the local-plugin path.
| Goal | Use |
|---|---|
| Compare ideas before writing files | ~idea "compare two API designs" |
| Let HelloAGENTS choose the path and continue | ~auto "add JWT login" |
| Review a plan before implementation | ~plan "refactor payment module" |
| Implement from a clear request or active plan | ~build "finish task 2 in the plan" |
| Build a full product requirement document | ~prd "modern dashboard for operations team" |
Run a long Codex task through /goal -> ~auto -> ~qa |
~loop "finish the auth refactor" |
| Initialize or refresh the project workflow | ~init |
| Validate current work | ~qa |
| Generate commit message and sync knowledge | ~commit |
In standby mode, projects that are not initialized get lighter rules and explicit ~command entry points. A project becomes initialized after ~init writes the project-level <!-- HELLOAGENTS_PROFILE: full --> marker.
In global mode, HelloAGENTS applies full rules by default at the host level.
By default, project knowledge lives in the project:
.helloagents/
This directory is the local knowledge, plan, state, and runtime directory.
When project_store_mode = "repo-shared":
- local
.helloagents/keeps project-local state and runtime files - stable knowledge and plan files move to
~/.helloagents/projects/<repo-key>/ - multiple worktrees of the same git repo can share the same stable knowledge
Runtime state and evidence remain local to the working project:
state_path.helloagents/sessions/active.json.helloagents/sessions/<workspace>/<session>/runtime.json.helloagents/sessions/<workspace>/<session>/artifacts/*.json
For read-only work with no local output, if neither the current directory nor its parents contain a project-local .helloagents/ directory, HelloAGENTS keeps short-lived runtime state under the user-level directory:
~/.helloagents/runtime/<scope-key>/
This only stores short-lived STATE.md, runtime.json, and artifacts/. Optional events.jsonl trace files are only written when trace mode is enabled. It is not project knowledge. Expired transient sessions are removed by TTL cleanup.
Once the task creates or modifies local files, or otherwise leaves local output in the current project, HelloAGENTS creates the project-local .helloagents/sessions/<workspace>/<session>/STATE.md automatically instead of keeping that task only in the user-level transient runtime.
| Command or setting | Behavior |
|---|---|
~init |
initializes the project workflow and syncs the knowledge base |
kb_create_mode = 0 |
disables automatic knowledge updates |
kb_create_mode = 1 |
syncs knowledge automatically only when the KB already exists |
kb_create_mode = 2 |
for coding tasks, auto-creates or syncs the KB when it already exists or the project is initialized |
HelloAGENTS uses this stage model for structured work:
ROUTE / TIER → SPEC → PLAN → BUILD → QA → CONSOLIDATE
| Stage | Purpose |
|---|---|
ROUTE / TIER |
decide whether the task is idea, plan, build, verify, PRD, or automatic flow |
SPEC |
clarify goal, constraints, and success criteria |
PLAN |
prepare plan files and choose needed skills |
BUILD |
implement and run local checks |
QA |
review, run commands, check contract and evidence |
CONSOLIDATE |
update state, knowledge, and closeout evidence |
| Tier | Typical use |
|---|---|
T0 |
read-only analysis, idea exploration, comparison |
T1 |
low-risk focused fixes or explicit verification |
T2 |
multi-file features, new projects, structured plans |
T3 |
high-risk or irreversible work such as auth, payment, database, release, production operations |
UI work follows this priority:
- current
plan.mdor PRD UI decisions .helloagents/DESIGN.md- any loaded
hello-uiimplementation and validation rules; all UI work must still satisfy the shared UI quality baseline
For heavier UI work, contract.json can require:
ui.styleAdvisor.requiredui.visualValidation.required
Those requirements are closed with the current session artifacts/advisor.json and artifacts/visual.json.
Verification commands are detected in this order:
- logical
.helloagents/verify.yaml - package manager scripts such as
package.json - automatic detection
When project_store_mode = "repo-shared", logical .helloagents/verify.yaml resolves from the shared project store.
Config file:
~/.helloagents/helloagents.json
Default shape:
{
"output_language": "",
"output_format": true,
"notify_level": 0,
"ralph_loop_enabled": true,
"guard_enabled": true,
"kb_create_mode": 1,
"project_store_mode": "local",
"auto_commit_enabled": true,
"commit_attribution": "",
"install_mode": "standby",
"host_install_modes": {}
}| Key | Default | Meaning |
|---|---|---|
output_language |
"" |
follow the user language unless set |
output_format |
true |
direct final-user closeout from the main agent uses the HelloAGENTS layout; intermediate, delegated, and sub-agent output stays natural |
notify_level |
0 |
0 off, 1 desktop, 2 sound, 3 both |
ralph_loop_enabled |
true |
run the QA stop gate for explicit ~qa / ~loop or required closeout gates |
guard_enabled |
true |
block dangerous commands |
kb_create_mode |
1 |
0 off, 1 sync existing KB automatically, 2 auto-create or sync the KB for coding tasks |
project_store_mode |
"local" |
local or repo-shared |
auto_commit_enabled |
true |
auto-create a local commit at closeout when verification passed and the working tree changed; false skips only the automatic commit |
commit_attribution |
"" |
optional text appended to commit messages |
install_mode |
"standby" |
current default install mode |
host_install_modes |
{} |
managed per-CLI mode map, such as { "codex": "standby" }; recorded only after successful host setup and used before falling back to install_mode |
auto_commit_enabled is initialized to true only when the config file is first created. Later installs and updates only fill missing keys and do not overwrite your existing value.
- standby writes
~/.claude/CLAUDE.md - standby updates
~/.claude/settings.jsonwith managed hooks and permissions - standby creates
~/.claude/helloagents -> ~/.helloagents/helloagents - global mode uses Claude Code's plugin system
- switching from global back to standby removes the native plugin first; if that cleanup fails, HelloAGENTS keeps Claude tracked as
global
- standby writes
~/.gemini/GEMINI.md - standby updates
~/.gemini/settings.jsonwith managed hooks - standby creates
~/.gemini/helloagents -> ~/.helloagents/helloagents - global mode uses Gemini's extension system
- switching from global back to standby removes the native extension first; if that cleanup fails, HelloAGENTS keeps Gemini tracked as
global
Codex is rules-file driven by default.
- standby writes
~/.codex/AGENTS.md - standby writes a portable managed
model_instructions_file = "~/.codex/AGENTS.md" - standby writes a managed and portable
notify = ["helloagents-js", "codex-notify"]command for closeout notification, so reinstalling, updating, or moving to another machine does not require rewriting an absolute path - standby writes silent Codex hooks to
~/.codex/hooks.json - Codex
SessionStartstays silent and reads the current~/.helloagents/helloagents.jsonat runtime instead of baking a config snapshot intoconfig.toml, so first-turn and post-compaction settings stay current - install and update also sync HelloAGENTS-managed Codex hook trust state in
~/.codex/config.toml, so Codex 0.129.0+ does not re-prompt for the managed hooks - that hook trust state is machine-local generated metadata derived from the current absolute
~/.codex/hooks.jsonpath; unlikemodel_instructions_file = "~/.codex/AGENTS.md", it is not portable config and should be regenerated on each machine - standby creates
~/.codex/helloagents -> ~/.helloagents/helloagents - global mode installs the native local-plugin chain, but keeps
~/.helloagents/helloagentsas the single managed runtime source by linking plugin roots, plugin cache, and~/.codex/helloagentsback to it doctor,cleanup, anduninstallalso recognize wrapped notify chains such as--previous-notify ["helloagents-js", "codex-notify"], so Codex App / Computer Use wrappers do not cause false drift reports or break notify restoration- for Codex app/plugin discovery,
globalis the native path;standbyremains the lighter default for explicit project work - cleanup removes only the HelloAGENTS-managed hook trust entries, while keeping user-owned hook state untouched
- Codex hooks only synchronize runtime state and enforce Stop gates; they do not inject HelloAGENTS rules or route text through hook output
- Codex closeout de-duplicates Stop hooks and native
codex-notify, so one turn does not notify twice, and clientless delegated child-completion events stay silent when the managed Stop hook is active /goalremains Codex-native. Enable it explicitly withhelloagents codex goals enablewhen long-running plan execution is needed- Current OpenAI docs still mark
/goalas experimental, and Codex app support is still preview. HelloAGENTS therefore treats/goalas an opt-in Codex-native accelerator, not as a required runtime dependency - Goal-aware commands resume from
tasks.md,contract.json, andstate_path; they do not create goals automatically or mark them complete before HelloAGENTS verification and closeout
Run all tests:
npm testThe current suite covers:
- install, update, cleanup, uninstall, branch switching, and mode switching
- Windows
.cmd/.batlifecycle dispatch without NodeDEP0190warnings - one-shot shell and PowerShell lifecycle dispatch, plus wrapper env cleanup and mode-routing rules for install, update, cleanup, uninstall, and branch switching
- Claude, Gemini, and Codex host integration behavior, including global-to-standby cleanup and failed native cleanup tracking
- Codex managed
model_instructions_file,notify,hooks.json, hook trust state, local plugin, marketplace, and cache behavior - Codex cleanup and canonical managed notify restoration rules, including wrapped
--previous-notifychains - Codex
/goalfeature toggles, long-running route context, and goal-aware command contracts helloagents doctor- project storage and
repo-sharedbehavior - workspace-session scoped
state_path, runtime signals, and evidence - runtime injection, routing, guard, verification, visual evidence, delivery gates, closeout de-duplication, sub-agent wrapper and notification suppression, and successful-mode tracking after native install failures
- README and skill contract alignment
docs/ is reference material for users and AI agents. It may lag behind implementation; runtime behavior is defined by source code, rule templates, skills, templates, and tests.
Both.
cli.mjshandles install, update, cleanup, diagnostics, and host config- rule templates define the loaded workflow rules
skills/defines task-specific behaviorscripts/provides runtime helpers for routing, guard, notify, verification, state, and evidence
Use ~init inside a repo when you want to initialize that project workflow and sync project knowledge.
Use helloagents --global when you want host-wide deployment across supported CLIs.
standby is lighter and explicit. It deploys rules to selected CLIs while leaving each repo uninitialized until you run ~init.
global applies full rules broadly at the host level. Claude and Gemini use native plugin/extension installs. Codex uses the local-plugin path.
If you mainly want Codex app/plugin discoverability, use global. If you mainly want a lighter, explicit project workflow, keep standby.
No HelloAGENTS rule or route text is injected through hooks. HelloAGENTS Codex hooks only write runtime state and enforce Stop gates; successful hooks stay quiet, while blocked or failed hooks show the necessary reason.
Yes.
- set
notify_levelto0to disable notifications - set
guard_enabledtofalseto disable command guards
No. Run npm explore -g helloagents -- npm run uninstall -- --all before package removal so HelloAGENTS can reuse the tracked or detected mode for each CLI and clean host integrations plus the stable runtime copy. Project .helloagents/ files and ~/.helloagents/helloagents.json are intentionally preserved unless you remove them yourself.
Check:
npm list -g helloagents
helloagents doctorThen restart the target CLI.
Run:
helloagents doctor
helloagents update codex
helloagents --standby
helloagents --globalUse the command that matches your installed mode and target CLI.
Refresh Codex:
helloagents update codexFor global mode, you can also run:
helloagents --globalCheck notify_level first.
- Windows: PowerShell must be able to show desktop notifications or play sound
- macOS:
afplayshould be available - Linux: install
aplay,paplay, ornotify-send
Review the command. Guard blocks known destructive operations and warns about risky writes. If you still want to disable it:
{ "guard_enabled": false }Code is licensed under Apache-2.0. Documentation is licensed under CC BY 4.0.
- Bug reports: open an issue
- Feature requests: open an issue
- Pull requests are welcome
If this project helps you, a star is the best support.
Thanks to codexzh.com / ccodezh.com for supporting this project.

