npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@lamtuanvu/pacer

v0.12.0

Published

Subscription-budget-aware delegation for AI coding agents through a CLI, MCP server and desktop app.

Readme

Subscription budgets for AI coding agents: route and delegate coding work according to usage, pace and available executors.

A planner can spend its subscription too quickly while other coding agents have unused capacity. pacer compares usage against time until reset, learns your active hours from local session logs, and helps the planner reserve capacity for decisions and review. Claude Code can plan while Codex, Cursor, agy, BytePlus or local models execute; Codex, Cursor and OpenCode can also be planners.

Roadmap · Design system.

Features

  • Budget status, executor ranking and routing by task kind.
  • Priority, even, burn-before-reset and cheapest-first pacing policies.
  • Delegation, limit-triggered fallback, task tracking and explicit planner review.
  • Planner skills and hooks, an optional stdio MCP server, a desktop app and a web app.
  • Direct CLI execution with per-task worktree placement and automatic permission bypass.
  • Rules-based classification, optional model adapters and local decision benchmarks.

Install

Download pacer for Mac. Choose the matching desktop-pacer-<version>-darwin-<arch>.dmg: aarch64 for Apple silicon or x86_64 for Intel. Open it and drag pacer into Applications. On first launch, approve it once as described in macOS desktop app.

Welcome leads to one consent screen for the background service and the terminal link at ~/.local/bin/pacer. If needed, an optional checkbox adds export PATH="$HOME/.local/bin:$PATH" to your ~/.zshrc or ~/.bashrc; it is off by default. Continue to the step-by-step Setup to choose your planner, connect agents, choose an executor and try a task. The app includes its CLI.

The pending M1 packages will contain two sibling executables: pacer (Rust) and pacer-core (the bundled TypeScript runtime). Keep them together. The standalone CLI can repair a missing or mismatched companion from its verified own-version release; an incomplete desktop app must be replaced as a complete app.

Copying a source build into ~/.local/bin/pacer replaces the desktop app's terminal command. Use a sandboxed PACER_HOME and a separate PACER_PORT for development builds.

pacer uninstall --all removes everything setup added, including the terminal link and the optional PATH block. Move the app to the Trash afterward. See installation for Linux AppImage and .deb downloads, updates and uninstall details.

Terminal and servers

Install the standalone CLI:

curl -fsSL https://raw.githubusercontent.com/lamtuanvu/pacer/main/install.sh | sh

The installer verifies SHA-256 checksums; verify a downloaded binary's build provenance with gh attestation verify <file> -R lamtuanvu/pacer. PACER_RELEASE_BASE remains an override for another HTTPS or local file:// release host. See installation for source builds and installer options.

From a source checkout, use Bun 1.4.2 or newer:

bun install --frozen-lockfile
bun run build
mkdir -p "$HOME/.local/bin"
cp dist/pacer dist/pacer-core "$HOME/.local/bin/"
export PATH="$HOME/.local/bin:$PATH"
pacer --version

macOS desktop app

Desktop releases are signed with the project's own code-signing certificate until pacer has an Apple Developer ID, so macOS blocks the first launch:

  1. Download desktop-pacer-<version>-darwin-<arch>.dmg from GitHub Releases, open it and drag pacer.app to Applications. The .app.tar.gz beside it contains the same app; it is the in-app update package.
  2. Open the app once. When macOS says it cannot verify the developer, open System Settings › Privacy & Security and choose Open Anyway.

Alternatively, from a terminal: xattr -dr com.apple.quarantine /Applications/pacer.app.

This is needed once. In-app updates are verified against the same pinned certificate and a separate update signature, and install without further prompts.

The future npm package is @lamtuanvu/pacer; it is not published yet. The planned Homebrew tap is lamtuanvu/homebrew-tap; it has not been created. The command stays pacer.

Quickstart

Install and sign in to your planner and at least one executor CLI first. For example, use Claude Code as planner and Codex as executor (Codex installation requires Node.js/npm):

# Claude Code: install, then sign in
curl -fsSL https://claude.ai/install.sh | bash
claude    # then type /login
# Codex: install, then sign in
npm install -g @openai/codex
codex login

See the Claude Code install guide, Claude Code login reference and Codex CLI guide for prerequisites. In the desktop app, follow Setup to connect these tools. For terminal and server installs, install pacer and run setup:

curl -fsSL https://raw.githubusercontent.com/lamtuanvu/pacer/main/install.sh | sh
pacer init

pacer init detects your tools, writes ~/.pacer/strategy.yaml, asks before installing the background service and before connecting each agent. Open your planner in the repository you want to work on and ask it for work — it delegates execution through pacer. Run pacer open to watch budgets and tasks, and pacer doctor to check the installation.

For a shell prompt, tmux or an agent status bar, pacer status --line reads the local snapshot and prints one compact line: ▬┃ Claude 63%·77 ▸2 ⚑1. The tick turns amber ahead of pace and red when out of quota. The needs-you flag disappears at zero; the mode appears only outside normal mode. --width N overrides COLUMNS (default 80): at 60 columns the mode drops, at 40 the planner name drops, and at 20 or fewer it becomes ▬┃63 ⚑1. Content shrinks further if needed to fit. Use --no-color (or NO_COLOR) for plain text and --line --json for the same fields as JSON. Plain status --json still returns the full budget status. Offline it prints pacer not running · pacer serve; --line always exits zero.

Run delegation in the repository you want the executor to edit. Supply a concrete scope and verification command:

pacer delegate --goal "Improve the setup instructions" \
  --kind docs --scope README.md --acceptance "test -s README.md" --json

Use the returned id in the next commands, replacing TASK_ID:

pacer watch TASK_ID --json
pacer tasks TASK_ID --json
# Review the diff in the reported worktree and run acceptance yourself.
pacer review TASK_ID --accept --json

Use --reject if the result does not satisfy the brief. For structured briefs, use pacer delegate --brief-file brief.json --json or pipe JSON to --brief-file -. CLI and brief reference.

How it works

The planner owns planning, decisions and review. route ranks configured, installed executors using usage readings and your strategy. delegate starts an executor, records its result and runs any supplied acceptance command. Provider limits can trigger fallback to another executor. The planner checks the diff and acceptance result before recording review; settlement alone is not acceptance.

| Mode | Planner policy | | --- | --- | | relaxed | Execute directly or delegate when useful; budget is behind pace or expiring. | | normal | Delegate substantial execution; budget is on pace or unknown. | | strict | Delegate execution and preserve capacity for decisions and review; budget is ahead of pace or near a limit. | | emergency | Delegate execution; the planner's reserved budget is exhausted. |

Pace uses learned active hours, falling back to calendar time until enough history exists. Modes guide installed planner policies; supported hooks can guard planner subagent execution. PACER=off disables pacing enforcement for a session (for example, PACER=off claude). To pause new delegation, use pacer pause <duration> (for example, pacer pause 1h) or choose Pause 1h in the tray menu. Running tasks continue; pacer resume ends the pause early.

Configuration and executors

pacer init creates ~/.pacer/strategy.yaml from detected tools. Edit providers, pacing and routing there; PACER_HOME overrides the state directory. See configuration and the starter strategy.

Native executor launchers support Codex (codex), Cursor (cursor-agent), agy and Claude Code (claude). OpenCode runs configured provider/model IDs, including BytePlus Coding Plan and local Ollama or LM Studio models. Usage support differs by provider; see executors.

The CLI is the primary agent interface. pacer install <planner> --mcp optionally registers pacer mcp, exposing budget, routing, delegation, task and review tools over stdio.

App

With the service running, pacer open opens the pacer app in your browser. Track budgets and pace, delegate and review tasks, manage executors and accounts, and change strategies, hosts and settings. Until setup is done, the Setup screen lists each step with one action (install the service, connect your planner, add an executor) and ends with a guided first delegation you review; provider sign-in shows the command to run in a terminal.

The app is served locally by the daemon and signs you in through a one-time link. Use pacer open sessions to open a screen, pacer open --print to print the sign-in link, or pacer open --logout to sign out all browser sessions. See the app guide for screens, security and troubleshooting.

Agents settings lists executors in priority order. Use an executor's More actions button to edit Priority and Parallel tasks, then save the page draft; Takes work saves immediately. Narrow settings containers show labelled cards with all actions visible. The Add agent wizard wraps its steps above the form when space is limited and keeps your draft if you leave. Machines cards and rows adapt to their available width.

Uninstall

pacer uninstall --all

It lists everything it will remove (agent integrations, restoring their backups; the login service; a leftover Orca plugin from an earlier pacer; ~/.pacer or PACER_HOME), asks once, then removes it. Add --binary to delete the pacer binary too, and --yes to skip the question in scripts. pacer no longer ships an Orca plugin; if you installed it earlier, also remove pacer from Orca Settings > Plugins. To disconnect a single agent, use pacer uninstall <agent>.

Privacy

pacer sends no telemetry. Its budget and activity readers use these local sources:

  • Claude rate-limit caches: ~/.pacer/cache/claude-rate-limits.json and ~/.claude/state/budget/claude.json (the newest available file).
  • Codex rate limits: tails of recent ~/.codex/sessions/**/rollout-*.jsonl files.
  • Active-hour learning: timestamps extracted from ~/.claude/projects/*/*.jsonl and Codex rollout logs over the last 28 days. The files themselves are read locally, including their other contents; the activity profile retains hour counts.
  • pacer's own strategy, caches, limit/block marks, task records, executor output logs, decision logs, installation manifests and local link/service state under ~/.pacer (or PACER_HOME).

BytePlus usage is read through arkcli usage plan --product coding-plan; metered OpenCode usage through opencode stats --models --json --days 7. Setup detects installed CLIs and may list local models with ollama list or lms ls --json. Integration commands inspect and edit planner configuration, skills and hooks, keeping backups. Delegation reads the supplied brief, repository Git state and executor reports; verification runs your acceptance command. Orca integration reads local runtime/worktree state and the bearer token for loopback HTTP.

pacer starts agents with permission bypass enabled (Codex and Claude bypass flags, Cursor force mode with its sandbox disabled, Antigravity permission bypass, and OpenCode auto-approval). This applies to headless, interactive, resumed and strategy-planning sessions. Before an interactive Claude Code launch in a pacer-created task worktree, pacer marks that worktree as trusted in the selected account's Claude state (.claude.json), so Claude's folder-trust and external-import prompts do not block unattended tasks. Unattended task launches also approve project MCP servers for that launch only; servers you rejected in the source checkout stay off, and takeovers and conversations keep Claude's MCP prompt. Executor sessions start from your login shell's environment, as a new terminal would; see Session environment. OpenCode and Cursor still honor explicit deny rules. Orca worker execution falls back to direct execution because its launch API cannot enforce a permission policy. Executors receive your brief and can access files and commands with your user permissions; their services have their own data policies. Optional ollama and jev classifier adapters send decision state to their configured endpoints. The default classifier is local rules; external shadow calls require classifier.shadow_external: true. Classifier keys may be read from environment variables or ~/.pacer/secrets. Release install/update commands download from GitHub Releases by default, or from your PACER_RELEASE_BASE override. No usage logs are uploaded for analytics.

Star history

Community

Read Contributing, the Code of Conduct, Support, Security, Governance and the Changelog. GitHub community channels will become available when the public repository launches.

Licensed under Apache-2.0; see NOTICE.

pacer is an independent project and is not affiliated with Anthropic, OpenAI, Cursor, BytePlus or Orca. Product names are used only to describe compatibility.