Own your AI building blocks.
Skills, agents & rules, one hub.
eHub scans a single shared root and projects your agentic capabilities across Codex, Claude Code, Cursor, OpenClaw, and the OpenStandard ~/.agents root — plan-then-apply, never overwriting your real files.
One shared root, projected to every tool
The problem
Agentic capabilities sprawl across every tool
Power users collect skills, agents, and rules everywhere. Keeping them consistent and safe across tools is a manual, error-prone chore.
Drift between tools
A skill that works in Cursor must be copied or symlinked into Claude Code, Codex, and OpenClaw to take effect. Each tool has its own scan paths and layout rules. Hand-syncing is slow and breaks silently.
No safe batch control
Today it is bash scripts, ad-hoc symlinks, and per-tool dotfile edits. No way to see what is enabled, replace a broken link, or refuse a destructive overwrite without writing custom code each time.
No scenario switching
Coding, research, writing, per-project work — each wants a different capability set. Switching means re-toggling dozens of items or maintaining parallel directory trees by hand.
Capabilities
Five building blocks, one hub
Manage every kind of agentic resource from a single window, then project it cleanly to whichever tool you use.
Skills management
Manage skills once and share them across Codex, Claude, Cursor, and every OpenStandard-supported tool. eHub respects each loader's layout so a single skill shows up everywhere.
- One source of truth for every skill, projected per tool.
- Flat layout for Claude's non-recursive loader, copies where needed.
- Enable, disable, or replace a skill without hand-editing dotfiles.

Quick search
Find any capability, pick it in a keystroke
Hit one shortcut to open a global, Alfred-style palette. Fuzzy-search every skill, agent, rule, hook, and command at once — then act without lifting your hands from the keyboard.
- One shortcut, one box — search across every resource type at once.
- Fuzzy matching ranks the closest hit to the top instantly.
- Enter to pick, ⌘C to copy — never break your flow.
- code-reviewerAgent
- rust-best-practicesSkill
- review-checklistRule
- /review-prCommand
- pre-review-lintHook

Suites & scenarios
Collect once, apply everywhere
Bundle skills, agents, rules, hooks, and commands into a named suite, then snap any tool — Codex, Cursor, and the rest — to it instantly, across every project.
- Save the currently enabled set as a named suite with one click.
- Apply a suite to a tool as a full reset — every item set in one pass.
- Reuse the same suite across all your projects, not just one.
- Stale references degrade gracefully with a warning badge and are skipped.
Sources
Tools and a skills library, managed
Keep your local tooling and the remote skills ecosystem under one roof — discover, install, and apply without leaving the hub.
Tools
Manage your local CLI tools from the hub. See what is installed, keep them organized, and apply capabilities to each one.

- Inventory your local CLIs in one place.
- Know which tools each capability projects to.
- Read-only by default — eHub never writes without a plan.
Skills library
Browse the remote skills ecosystem powered by skills.sh. Star what you like and install it into a workspace with one explicit, user-initiated action.

- Discover community skills via skills.sh.
- Star and install a skill into a workspace on demand.
- Explicit installs only — never automatic, always your call.
How it works
Scan. Stage. Apply.
A predictable three-step loop. You always see the plan before a single file changes.
- 01
Scan
eHub reads your shared root and resolves the live state per tool — enabled, disabled, broken, stale, or foreign.
- 02
Stage
Toggle capabilities on or off. Nothing touches disk yet — your changes live in memory as a desired-state map.
- 03
Apply
eHub diffs desired against disk and runs a safe plan: create, replace, refresh, or skip-on-conflict. Partial-tolerant by design.
Safe by default
Filesystem state is the source of truth
No shadow database. No silent overwrites. Just disk, projected cleanly and reversibly.
Rust core owns the disk
Every filesystem mutation happens in the Rust core. The WebView is untrusted and never writes.
Never overwrite real files
Conflicts surface as explicit skip_conflict — a real file or directory at a target is never clobbered.
Atomic, idempotent writes
Dotfiles write via .tmp + rename. Plan and apply are idempotent; per-op failures never abort the rest.
No shell capability
The app ships without the shell plugin. Scoped FS access only, normalized to absolute paths before any op.
Bring order to your AI world.
Stop hand-syncing dotfiles. Manage every skill, agent, and rule from one hub — safely.
macOS only · v0.9.5