Skip to content
Hoply
Download

Guide

From download to first session in two minutes

Hoply needs no account and no daemon. Connecting an agent writes one small block of config, with a backup, and only ever touches Hoply's own entries.

  1. 1

    Install it

    Download the universal DMG and drag Hoply to Applications, or install it with Homebrew. Open it once. No daemon, no Python, no Node — the listener is inside the app.

    brew install --cask milos5611/hoply/hoply

    Release builds are signed with a Developer ID and notarized by Apple. The first open shows macOS’s usual one-time confirmation for an app downloaded from the internet; choose Open. A Homebrew install updates itself through Sparkle, like the DMG.

  2. 2

    Connect your agents

    Open Settings → Agents. Each card shows what Hoply found and whether it is connected, and one press writes the config. Re-running is safe: Hoply only touches its own entries and backs the file up first.

    Claude Code   →  ~/.claude/settings.json
    Codex CLI     →  ~/.codex/hooks.json
    Copilot CLI   →  ~/.copilot/hooks/hoply.json

    Restart any session that was already running, so it picks up the hooks. Codex asks once more: open it, run /hooks, trust Hoply’s hooks.

  3. 3

    Check events arrive

    The panel footer says “Listening on 127.0.0.1:4318”, or why it isn’t. Start an agent and a row appears within a second.

    curl -s http://127.0.0.1:4318/health

    If the port is taken by an OpenTelemetry collector, change it in Settings, then press Update on each agent card.

  4. 4

    Copilot in JetBrains

    Copilot’s agent in JetBrains runs the Copilot CLI hooks, so connecting Copilot CLI covers it and its sessions show up as Copilot CLI. Where its agent doesn’t run those hooks, Hoply reads it over OpenTelemetry: turn the export on and point it at Hoply.

    Settings → Tools → GitHub Copilot → Chat → OpenTelemetry, endpoint http://127.0.0.1:4318 over HTTP. JSON and protobuf both work.

  5. 5

    Qwen Code

    Qwen is not connected automatically — its OpenTelemetry is its only history, so Hoply stores it as it arrives.

    "telemetry": {
      "enabled": true,
      "otlpEndpoint": "http://127.0.0.1:4318",
      "otlpProtocol": "http"
    }

    To file usage under the right project, start Qwen with OTEL_RESOURCE_ATTRIBUTES=hoply.cwd=$PWD. Without it Hoply asks the process for its working directory, and anything it cannot place shows as Unassigned.

  6. 6

    Your local model server

    Add any number of servers — local or remote, vLLM, tensorfold, llama.cpp, SGLang, TGI, Ollama, LM Studio. Hoply polls each one every five seconds while you are looking at it.

    Server URL:  http://192.168.1.20:8888      (no /metrics)

    Private-range addresses are allowed through App Transport Security in the app’s own Info.plist; macOS asks once for Local Network access. Tokens go to your Keychain.

  7. 7

    Plan limits

    Press Connect on the Claude limits card. Hoply reads the same “Claude Code-credentials” Keychain item Claude Code wrote, then asks Anthropic for your windows. Codex’s limits need no setup: Codex writes them into its session files with each response, and they appear on the Limits page once you use Codex.

    macOS asks once whether it may read that Keychain item — choose Always Allow. If the login has expired, open Claude Code once and it refreshes. Codex’s limits move only while Codex runs on this Mac.

  8. 8

    Approve from Hoply

    Off by default. Turn it on and a Claude Code permission prompt gets Allow and Deny in the panel and on its notification, with the exact command.

    The terminal prompt stays up and whichever answers first wins. Needs an up-to-date Claude Code hook: if the Agents card says Update, press it once.

  9. 9

    Correct a price

    Costs come from a table bundled in the app. A model Hoply does not know is listed as unpriced, never as free. Add or fix one by dropping a file next to the database.

    { "models": { "claude-opus-4-5": { "input": 5, "output": 25 } } }

    Per million tokens, USD. Cache prices default to 0.1× input for a read, 1.25× for a 5-minute write and 2× for an hour write.

Coverage

What each source gives you

State comes from hooks where the agent has them, usage from the agent's own records, so nothing is counted twice.

SourceHow it reportsWhat you see
Claude CodeHooks for state, its own transcripts for tokens (OpenTelemetry adds live counts)Working, needs permission, your turn · task title · last tool · tokens · cost
Codex CLIHooks for state, its own session files for tokensWorking, needs permission, your turn · last tool · tokens · API-equivalent cost · subagents · context window
Copilot CLI (and Copilot’s agent in JetBrains)Hooks for state, its own session store and session files for tokensWorking, needs permission, your turn · task title · model · last tool · AI units · premium requests
Copilot in JetBrainsOpenTelemetry, when its agent doesn’t run the Copilot CLI hooksWorking, idle · tokens
Qwen CodeOpenTelemetry, stored by HoplyWorking, idle · prompt title · tokens
Local model serverPrometheus /metrics or the OpenAI-compatible model listModel · running and queued · tokens/s · KV cache
Claude planYour own Claude Code login, read from the Keychain5-hour and weekly usage, pace, burn rate, reset time
Codex planThe rate limits Codex writes into its session files with each response5-hour and weekly usage (30 days on the free plan), plan, pace, burn rate, reset time

Agent names are their owners’ trademarks and are used here only to say what Hoply works with.

Something not arriving?

The panel footer is the first thing to read: it says which address Hoply is listening on, or why it is not. A port taken by an OpenTelemetry collector is the usual cause — change it in Settings, then press Update on each agent card so the hooks point at the new port.

Write to coolcraftcoders@gmail.com with the footer text and the agent, and you get an answer from the person who wrote it.

Two minutes, then it is in your menu bar

Follow the steps above with the DMG open, and your first session shows up before the coffee is done.

macOS 14 Sonoma or newer · Apple silicon and Intel · Free during early access