Standalone sync client for the Runebox registry — no Claude Code required. Keeps your team's approved skills, agents, and commands installed and current on Claude Code, Codex CLI, Cursor, and Gemini CLI.
Project description
Runebox sync — Claude Code plugin + standalone CLI
Your team's Runebox registry, kept in sync on every engineer's
machine: log in once with an API key and your org's approved skills, agents, and
commands install and stay current — on Claude Code, Codex CLI, Cursor, or Gemini
CLI. One sync core (scripts/sync.py, stdlib-only) ships two ways:
- On Claude Code — the plugin below, with a
SessionStarthook. - Everywhere else — the same script as a standalone
runebox-syncCLI viapipx/uvx. No Claude Code required.
Install — Claude Code plugin
claude plugin marketplace add runebox-ai/runebox-plugin
claude plugin install runebox
/runebox:login
/runebox:login asks for your org's API key (starts with rbx_; your admin
creates it on the org's Get set up page at runebox.ai),
verifies it, auto-detects which harnesses you have installed, and syncs the whole
approved catalog in one shot.
Install — standalone CLI (Codex, Cursor, Gemini CLI)
pipx install runebox-sync # or: uvx runebox-sync login
printf '%s' "rbx_yourkey" | runebox-sync login
Same key as the plugin path — an engineer on Codex/Cursor/Gemini CLI never touches
Claude Code at all. Add runebox-sync autosync to your shell profile so it keeps
syncing on every new shell (there's no SessionStart hook outside Claude Code):
runebox-sync autosync --apply
Commands
Plugin (/runebox:…) |
Standalone CLI (runebox-sync …) |
What it does |
|---|---|---|
/runebox:login |
login |
Connect and install the approved catalog for every detected harness |
/runebox:sync |
sync [--quiet] |
Sync now (the plugin also runs this automatically at session start) |
/runebox:status |
status |
Show connected orgs and per-harness inventory |
| — | harness enable|disable <name> |
Turn a harness (claude/codex/cursor/gemini) on or off; disabling uninstalls just that harness's files |
| — | autosync [--apply] |
Print (or append) a shell-profile snippet that keeps non-Claude harnesses synced |
/runebox:logout |
logout [--remove] |
Disconnect (optionally remove everything it installed) |
How sync works
- Per org, per enabled harness: one conditional GET against the org catalog.
Nothing changed → a cheap
304and zero output. Something changed → it installs/updates/removes and prints one line. A skill installs identically to every harness (the open SKILL.md format); a command's filename/location differs per harness; agents/output styles/claude_mdstay Claude Code-only for now. - Every file it installs is tracked in a local manifest, per (org, harness). It only ever touches files it installed itself — never your own skills or settings.
- When an admin yanks a bad version, the next sync removes it from your machine. When your key is revoked, sync stops with a single notice.
- Adding a harness the server can target requires a client release (a new allowlisted install root) — a compromised server can't write anywhere new.
Requirements
python3on PATH — the sync script is stdlib-only, no dependencies, works standalone or as a Claude Code plugin.
Security notes
- API keys are read from stdin at login (never passed as a CLI argument) and
stored in
~/.runebox/credentials.jsonwith0600permissions. - Install paths from the server are validated client-side against a per-harness roots allowlist — a hostile path can't escape those directories, and an unrecognized root name is rejected outright.
- Sync failures never block your session; the hook (and
--quietsync) exits quietly.
Runebox is a private, governed artifact registry for teams using AI coding agents — publish once, scan + review every version, and every engineer's tools stay in sync, whichever harness they run. Free for teams up to 5 seats at runebox.ai.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file runebox_sync-0.2.0.tar.gz.
File metadata
- Download URL: runebox_sync-0.2.0.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17887f4515a9346509a8e4203c79883437db4fe72d0d1a3bbb0b50fd0f586948
|
|
| MD5 |
9411d23faedb1b5cddc038844443acc1
|
|
| BLAKE2b-256 |
25db3412e9be22f28e38fc2298fd3c155276bc1f2ec79f0eb77e89496113aee0
|
File details
Details for the file runebox_sync-0.2.0-py3-none-any.whl.
File metadata
- Download URL: runebox_sync-0.2.0-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8ed78073a5ba055fd25e98397ee6f60dc664566cab11c7190b6f98b06679bc5
|
|
| MD5 |
bdaa6c5360f9866109dfbcaf2af9b7e4
|
|
| BLAKE2b-256 |
0532e7400afc0e2e535ec8ff5bd80c7617bd4781aaf93853396a0f9723d7cf4f
|