All features

Built for AI agents

An agent can look inside pogi and control it with tools, and pogi can write the agent a short brief on how to use it.

localhost:7644/_pogi/

The problem

An agent that writes cloud code needs to see what happened after each call, and to reset state between tries.

How it works

  1. 01

    Connect it

    pogi mcp runs an MCP server (MCP is the protocol coding agents use to call tools) on standard input and output. The same server is on HTTP at /_pogi/mcp. pogi mcp --print-config prints the setup for Claude Code, Cursor and Codex.

    pogi mcp --print-config
    # Claude Code: stdio, through pogi mcp
    claude mcp add pogi -- pogi mcp
    # or straight over HTTP
    claude mcp add --transport http pogi http://localhost:7644/_pogi/mcp
    
    # Cursor: .cursor/mcp.json
    {
      "mcpServers": {
        "pogi": { "url": "http://localhost:7644/_pogi/mcp" }
      }
    }
    
    # Codex: ~/.codex/config.toml
    [mcp_servers.pogi]
    command = "pogi"
    args = ["mcp"]
    
    # pogi must be running (pogi start). "pogi agents init" adds a brief on using it to AGENTS.md.
  2. 02

    Give it tools

    Tools to look inside: the request log, one request in full, why IAM said no, resources, queue messages and the inbox. Tools to control: reset, snapshots, chaos rules, Lambda calls and cost estimates.

    MCP tools/list
    chaos_add                chaos_clear              chaos_list
    connection_info          delete_stack             deploy_stack
    estimate_terraform_cost  function_logs            get_request
    iam_decisions            inbox                    inspect_resource
    invoke_function          list_resources           list_sizes
    peek_queue               request_log              reset
    seed                     snapshot_list            snapshot_load
    snapshot_save            stack_status             status
  3. 03

    Brief it

    pogi agents init adds a short brief about pogi to AGENTS.md. It sits between two markers, so running the command again updates it.

    AGENTS.md (trimmed)
    <!-- pogi:begin -->
    ## Local cloud: pogi
    
    This project develops against pogi, a local emulator of AWS, Google Cloud and Azure on one endpoint,
    http://localhost:7644 (Azure Storage also uses ports 10000-10002). State is local and disposable; never use real
    cloud credentials here.
    
    - **Start and connect:** `pogi start` (`--headless` without a terminal), then `eval "$(pogi env)"`
      points the AWS, Google Cloud and Azure SDKs and CLIs at pogi. …
    - **MCP tools** (server `pogi` at http://localhost:7644/_pogi/mcp, or `pogi mcp` over stdio). …
      - a call failed: `request_log` with `errors_only`, then `get_request` for headers and bodies;
        `iam_decisions` when access is denied;
      - state and messages: `status`, `list_resources`, `inspect_resource`, `peek_queue` (SQS, without
        consuming), `inbox` (SES email, SNS SMS and email), `connection_info`;
      - control: `reset`, `snapshot_save` / `snapshot_load` / `snapshot_list`, `chaos_add` / `chaos_list` /
        `chaos_clear` (inject errors and latency), … `invoke_function` / `function_logs` (Lambda), `seed`.
    …
    <!-- pogi:end -->

Try it

This is real output from a running pogi.

Add pogi to Claude Code

claude mcp add pogi -- pogi mcp
# or straight over HTTP
claude mcp add --transport http pogi http://localhost:7644/_pogi/mcp

Write the brief

pogi agents init --file CLAUDE.md
wrote the pogi section to CLAUDE.md

What to know

  • There is no cloud-API passthrough. Agents make calls with the usual SDKs and CLIs, and use the tools to look inside pogi.
  • pogi must be running (pogi start) for the tools to work.

Learn it step by step

The guides are in the docs.