Skip to content
Independent product. Not affiliated with or endorsed by Anthropic.

Install

One line on macOS, Linux or Windows, then three commands to authorize the machine and install the plugin.

CULP is two pieces: a CLI called culp, and a Claude Code plugin that the CLI installs for you. The one-line installer places the CLI; culp setup does the rest.

macOS and Linux

curl -fsSL https://api.claudeusagelimits.com/install.sh | bash

Windows

irm https://api.claudeusagelimits.com/install.ps1 | iex

Windows is a first-class target, not a courtesy: the CLI's test suite runs on a real Windows runner in CI, because the bugs that only appear there are the ones that cannot be reproduced anywhere else.

Then, on every machine

  1. culp login opens your browser and authorizes this machine. The authorization lasts 180 days and there is no refresh token; when it expires, log in again.

  2. culp setup downloads the plugin bundle and points Claude Code at it. It verifies every step by re-reading what Claude Code reports, because claude plugin install is a no-op on an already-installed plugin and "already exists" is not proof.

  3. culp doctor checks all of it and names anything that is wrong.

What lands on your machine

Everything CULP stores is under ~/.culp:

File What it holds
device.key This device's Ed25519 private key. It never leaves the machine.
device.json The device identity the key is bound to.
auth.json The device's access token. Deliberately no email, no password, no MAC, no refresh token.
config.json The API URL and endpoint overrides.
update.json The cached release manifest.
motd.json The cached message of the day.

Set CULP_HOME to move all of it somewhere else. Every path above is derived from that one variable.

Keeping it current

culp update synchronizes the whole installation, not just the wheel: the CLI and the plugin carry independent versions, and a plugin-only release is the normal case.

The wheel half never installs in its own process. It spawns a detached process that waits for the current culp to exit and only then runs the installer, on every platform, because replacing a tool environment underneath a running process loses every module it has not imported yet. So the command reports a scheduled install rather than a version; culp --version in a later session is the confirmation.

A session that starts while an update is published tells you so, and you can ask Claude to run culp update for you rather than doing it yourself.