Skip to main content
Glama

AgentNave

AgentNave is a local STDIO MCP server for agents that need to launch Antigravity CLI, Claude Code, CodeBuddy Code, Codex CLI, or Grok CLI as subagents. It deliberately leaves planning, parallelism, review, synthesis, retries, permissions, and worktree management to the calling Agent Manager.

AgentNave has no human-facing CLI. The agentnave-mcp command only starts the MCP process for a compatible host.

Requirements

  • macOS or Linux

  • uv and Git (for installation from a release tag)

  • At least one authenticated provider CLI

uv installs AgentNave in an isolated Python 3.12 environment. A separately managed system Python is not required.

AgentNave supports POSIX process supervision on macOS and Linux. Native Windows support requires Job Object ownership first.

Related MCP server: pokeclaw

Install

Install the agentnave-mcp runtime and register it in your MCP host. Model-selection guidance, lifecycle instructions, and tool schemas are delivered through MCP; no Skill is required.

Install the runtime with uv tool so the MCP launcher does not depend on a source checkout:

uv tool install --python 3.12 \
  "git+https://github.com/TimWongUp/agentnave.git@v0.4.0"

The release tag is part of the install source. Do not replace it with the mutable main branch. uv owns the isolated runtime, launcher, upgrades, and removal. It does not modify host Skills, global instructions, permissions, or provider configuration.

Then register the runtime with a host-specific AGENTNAVE_EXCLUDED_PROVIDERS environment value: Codex hosts exclude codex, Claude Code hosts exclude claude, and other matching hosts exclude their corresponding CLI provider. The server rejects excluded providers before creating an invocation. The detailed guide covers:

  • Codex;

  • Claude Code;

  • Gemini CLI;

  • OpenCode; and

  • other agents that support local STDIO MCP servers.

Read the installation guide for host-specific MCP registration, provider exclusions, verification, upgrades, and removal.

AgentNave creates no durable user data. Provider authentication and configuration remain owned by their respective CLIs.

MCP tools

start_agent

Starts one provider invocation and immediately returns an in-memory invocation_id. Required arguments are provider, prompt, and an absolute existing cwd. Optional arguments are session_id, timeout_seconds, and explicit provider_options.

Supported providers are antigravity, claude, codebuddy, codex, and grok. MCP instructions provide model and effort defaults for the Manager to pass explicitly through allowlisted options. User choices override that guidance; omitted options still inherit native settings. Exclusions are configured per host process, independently of the model it uses. For Codex calls outside a Git repository, the Manager must explicitly pass {"skip_git_repo_check": true} in provider_options.

wait_agent

Waits for at most wait_timeout_seconds. A running response leaves the invocation active and includes a lifecycle snapshot. A finished response contains the normalized provider result.

cancel_agent

Stops one invocation and returns its terminal result. Use it only when the Manager intends to stop active provider work; wait_agent observes work without cancelling it.

All tools publish input and output JSON Schemas. Agent-correctable request errors are returned as MCP Tool errors with retry guidance; provider launch and execution outcomes remain structured Invocation Results.

Lifecycle and security

Invocation handles exist only for the current MCP server process. When the server stops, AgentNave makes a best-effort attempt to terminate processes that remain in the provider process group. Old handles cannot be recovered after restart, although a provider session_id can be supplied to a new start_agent call if the provider retained it.

A running snapshot reports the lifecycle phase, elapsed time, and age of the latest official provider stream event. It does not claim semantic task progress. Terminal output contains the provider's final response rather than streamed intermediate narration.

AgentNave is not a sandbox. A same-user provider with command permission can deliberately daemonize, kill its supervisor, or otherwise escape ordinary POSIX process-group cleanup. Provider-native permissions are the security boundary; use OS-level isolation when adversarial containment is required.

Verify

The commands below are for a source checkout used for development, not for the uv tool installation above. See CONTRIBUTING.md for the complete contributor workflow.

uv sync --locked --all-groups
uv run ruff format --check .
uv run ruff check .
uv run pyright
uv run pytest

Contributing and security

Contributions are welcome through GitHub Issues and pull requests. See CONTRIBUTING.md for the development workflow and validation requirements.

Do not report security vulnerabilities in a public Issue. Follow SECURITY.md to use the repository's private vulnerability reporting channel.

License

AgentNave is licensed under the MIT License.

Available Tools

3 tools
cancel_agentCancel a subagent invocationA
DestructiveIdempotent

Stop one invocation and return its final cancelled or already-terminal result.

Use this only when the Manager intends to stop active provider work; use wait_agent to observe work without stopping it.

ParametersJSON Schema
NameRequiredDescriptionDefault
invocation_idYesInvocation ID returned by start_agent.

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYes
resultYes
invocation_idYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds value beyond those flags by disclosing the already-terminal case — calling cancel on a finished invocation returns its terminal result rather than failing — which explains the idempotency semantics. This aligns cleanly with the annotations, so no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The core action and return behavior are front-loaded in sentence one, and the routing guidance in sentence two earns its place by preventing misuse of a destructive operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with full annotation coverage and an output schema present, the description covers the action, the return behavior, and the when/when-not decision. The only absent details (exact result shape) are already handled by the output schema, so nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the single required parameter invocation_id is documented as 'Invocation ID returned by start_agent,' which tells the agent where the value comes from. The description references 'one invocation' consistently but adds no syntax or format detail beyond the schema, so the baseline for high coverage applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource — 'Stop one invocation' — and specifies the return behavior ('return its final cancelled or already-terminal result'). It also names the sibling it is not (wait_agent), so an agent can distinguish cancel from the observe-only tool without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence is explicit: 'Use this only when the Manager intends to stop active provider work' gives the exact triggering condition. It then names the alternative ('use wait_agent to observe work without stopping it'), leaving no ambiguity about when to pick each sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_agentStart a local CLI subagentA
Destructive

Start one subagent and return its in-memory invocation ID without waiting for completion.

Use wait_agent with the returned ID to observe the invocation. The launched provider may read, write, or run commands in cwd subject to its native permission controls.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdYesAbsolute existing directory where the subagent runs.
promptYesComplete, self-contained task for the subagent.
providerYesLocal subagent provider to launch.
session_idNoProvider session ID returned by an earlier finished invocation.
timeout_secondsNoMaximum provider runtime in seconds.
provider_optionsNoExplicit provider-native options. Omit to inherit the provider's own settings; supported keys depend on the selected provider.

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYes
invocation_idYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses important behavior beyond annotations: the call returns immediately without waiting, and the launched provider may read, write, or run commands in cwd subject to native permission controls. This adds meaningful safety and async semantics that annotations alone do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the core behavior is stated first, follow-up observation guidance is second, and the side-effect caveat is third. Every sentence contributes necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential invocation flow and side-effect profile, and the output schema plus 100% parameter descriptions complete the picture. It does not mention the cancel_agent sibling or explicitly state that the returned ID works with it, but that is inferable from sibling context and not a critical gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters, including cwd, prompt, provider, session_id, timeout_seconds, and provider_options. The description does not add further parameter-level meaning, but it does not need to because the schema carries the full load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action: start one subagent and return an in-memory invocation ID without waiting. It also names wait_agent, directly distinguishing this tool from siblings. The title reinforces the resource and action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context by stating that wait_agent should be used with the returned ID to observe the invocation. It does not explicitly mention cancellation or when not to use this tool, but the asynchronous-start versus observe/cancel relationship is evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_agentWait for a subagent invocationA
Read-onlyIdempotent

Wait briefly for one invocation and return either a running snapshot or its final result.

A running response leaves the invocation active; call wait_agent again later. Use cancel_agent only when the invocation should be stopped.

ParametersJSON Schema
NameRequiredDescriptionDefault
invocation_idYesInvocation ID returned by start_agent.
wait_timeout_secondsNoMaximum time to wait during this call, in seconds.

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYes
resultNo
snapshotNo
invocation_idYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as readOnly, idempotent, and non-destructive. The description adds stateful behavior beyond annotations: a running response leaves the invocation active and that wait_agent may be called multiple times. It also clarifies that cancellation is handled by a separate sibling, not by this tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short paragraphs, with the core purpose in the first sentence and operational guidance in the second paragraph. Every sentence adds information; no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the key operational distinction (running vs. final result) and what to do in each case, plus the explicit pointer to cancel_agent. With an output schema present, it doesn't need to detail the return structure, and the timeout semantics are reasonably implied by the running-snapshot outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add any parameter-level meaning beyond the schema, but the schema already documents invocation_id and wait_timeout_seconds clearly, including defaults and bounds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb-resource pairing ('Wait briefly for one invocation') and the expected outcome ('return either a running snapshot or its final result'). It distinguishes itself from cancel_agent by explicitly naming the cancellation path, and from start_agent by position (waiting follows starting).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on how to respond to a running result: 'call wait_agent again later.' It also delineates the boundary with cancel_agent: 'Use cancel_agent only when the invocation should be stopped.' This is sufficient for an agent to decide between polling and cancelling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.3.0
    • Changedcancel_agent1 field changed
      • changedOutput schema / $defs / ProviderName / enum
        Previous value: -[
        -  "antigravity",
        -  "claude",
        -  "codebuddy",
        -  "grok"
        -]New value: +[
        +  "antigravity",
        +  "claude",
        +  "codebuddy",
        +  "codex",
        +  "grok"
        +]
    • Changedstart_agent1 field changed
      • changedInput schema / $defs / ProviderName / enum
        Previous value: -[
        -  "antigravity",
        -  "claude",
        -  "codebuddy",
        -  "grok"
        -]New value: +[
        +  "antigravity",
        +  "claude",
        +  "codebuddy",
        +  "codex",
        +  "grok"
        +]
    • Changedwait_agent1 field changed
      • changedOutput schema / $defs / ProviderName / enum
        Previous value: -[
        -  "antigravity",
        -  "claude",
        -  "codebuddy",
        -  "grok"
        -]New value: +[
        +  "antigravity",
        +  "claude",
        +  "codebuddy",
        +  "codex",
        +  "grok"
        +]
  2. 3 tool updatesv0.2.0
    • First observedcancel_agent
    • First observedstart_agent
    • First observedwait_agent

TDQS

A4.7/5.0
Disambiguation5/5

Each tool targets a distinct lifecycle phase: starting, observing, or stopping an invocation. wait_agent and cancel_agent are clearly differentiated by whether the caller wants to continue observing or actively terminate the work.

Naming Consistency5/5

All three names follow the same verb_agent convention with clear verbs: start, wait, cancel. There are no mixed naming styles or vague identifiers.

Tool Count5/5

Three tools is a well-scoped count for a focused agent lifecycle server. Each tool fulfills a necessary operation without redundancy or bloat.

Completeness5/5

The lifecycle is complete: start an agent, wait for its progress or final result, and cancel when needed. wait_agent also returns final results, so there is no dead-end after an invocation completes.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables any MCP-compatible client to use existing Claude Code agents from .claude/agents/ directories. Spawns agents in separate CLI sessions for better context optimization and performance across Codex, Gemini CLI, and other AI coding assistants.
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables MCP clients to spawn and control Codex CLI and Claude Code sessions on the host machine, with session management and filesystem access.
    4
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables ISLI agents and MCP clients to dispatch natural-language coding and terminal tasks to a locally-installed Claude Code CLI, supporting both one-shot execution and persistent sessions with workspace and security controls.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TimWongUp/agentnave'

If you have feedback or need assistance with the MCP directory API, please join our Discord server