AI Employee Builder Public Shell
This plugin is intentionally thin: it contains no paid AIEB instruction bodies. It gives Claude a local connector and routing stubs; licensed skill instructions are fetched from the hosted AIEB MCP at runtime.
- MCP:
https://aieb-gated-mcp.vercel.app/mcp - Secure activation API:
https://aieb-gated-mcp.vercel.app/device/* - Customer activation page:
https://course.chiefleverageofficers.com/clo-course/get-access-aieb.html(the olderthe2hourclo.github.iocopy redirects here)
Secure connection model (since v0.13.0)
The connector is defined at plugin level, so it exists in every folder the buyer opens. Setup is a device flow:
/setup-aiebcallsconnect_aiebwith no secrets.- The connector creates a short-lived, one-time activation code and returns the course-page URL.
- The buyer signs in on that HTTPS page with the Google address they bought with, and the server matches it to their order. A Lemon Squeezy key is the fallback for an address with no purchase behind it — entered on the page, never in Claude or chat history.
- The connector polls the activation status in the background and completes the connection by itself the moment the page approves (
finish_aieb_connectionremains as the manual confirm/fallback). - On approval the connector exchanges its private verifier for an opaque
aieb_v1_…device token and stores that token in~/.aieb-mcp/config.jsonwith user-only file permissions where supported.
The license key is used once by the activation service and is not stored by the plugin or written to product analytics. The server stores a hash of the device token, not the bearer token itself. Activation links expire and can be consumed only once.
Old AIEB_LICENSE_KEY, config.json license-key, and activation.json installations remain readable only for migration. A successful secure connection removes license_key from the user config. The retired activate_license tool is no longer advertised; a compatibility shim still answers cached clients by redirecting to connect_aieb, and it accepts no key.
What ships
skills/: generated auto-routing loaders. Each loader fetches the realSKILL.mdand referenced files withget_skill. Regenerated by the author's tooling (scripts/plugin-dev/gen-stubs.mjsin the server repo) — never hand-edit.scripts/aieb-mcp-proxy.mjs: local stdio connector, secure device-flow tools, and remote MCP forwarding.commands/: buyer-facing commands (/setup-aieb,/check-setup, plus workflow shortcuts).hooks/: onboarding, roadmap, update, and retrospective nudges; a skill-edit guard that steers edits of served skills toward overrides; and a one-time end-of-session outcome-report nudge (fixed outcome categories only, always disclosed to the user in chat).skill-telemetry/: explicit one-note feedback only; no automatic transcript capture or consent prompt.
No transcript, prompt, uploaded file, memory, or customer business data is stored in this shell or sent as analytics. Business content stays in the buyer's local workspace. Server events are limited to pseudonymous member/device references, skill IDs, result classes, versions, latency, and estimated token counts.
Install
/plugin marketplace add https://github.com/the2hourclo/aieb-thin-plugin
/plugin install ai-employee-builder@aieb-thin-plugin
/reload-plugins
/setup-aieb
The buyer follows the secure link, clicks Connect this device, and returns to Claude — the connection completes by itself within a few seconds. No restart is required.
Connector config
The plugin root .mcp.json ships with:
{
"mcpServers": {
"aieb": {
"type": "stdio",
"command": "node",
"args": ["${CLAUDE_PLUGIN_ROOT}/scripts/aieb-mcp-proxy.mjs"]
}
}
}
After secure setup, ~/.aieb-mcp/config.json resembles:
{
"installation_id": "local-random-uuid",
"device_token": "aieb_v1_opaque-token",
"device_ref": "pseudonymous-device-reference",
"connected_at": "2026-07-10T00:00:00.000Z"
}
Buyers never hand-edit this file. AIEB_MCP_URL, AIEB_DEVICE_START_URL, and AIEB_DEVICE_STATUS_URL remain available as developer/testing overrides.
Runtime and revocation
Normal skill requests use the device token as the MCP bearer credential. The server resolves it to a stored entitlement before returning paid instructions.
- A Lemon Squeezy cancellation webhook sets the entitlement to
cancelledimmediately, even if Lemon Squeezy would otherwise leave the subscription usable until its billing-period end. - Cancelled, expired, unpaid, refunded, or disabled entitlements receive no paid content.
- Resume/renew webhooks restore the entitlement without reinstalling the plugin.
- Rate limits are independent for IP, device/license identity, activation code, and unauthenticated traffic.
- The connector uses the operating system certificate store and bounded network timeouts.
Repair flow
| Symptom | Buyer-safe fix |
|---|---|
| Connector missing | Install/update the plugin, reload, then run /setup-aieb. |
| Unauthorized or device token revoked | Run /setup-aieb and use the secure page. Never paste a key into chat. |
| Subscription cancelled/lapsed | Resume or renew in Lemon Squeezy, then reconnect if needed. |
| Activation link expired | Run /setup-aieb again for a fresh link. |
| Network/VPN problem | Fix connectivity and retry; a network error is never presented as a rejected subscription. |
Publishing
Paid skill content updates ship through the MCP server and require no shell reinstall. When the shell changes, bump both Claude manifests, the Codex manifest, and the telemetry stamp (skill-telemetry/config.json → plugin_version), update AIEB_PLUGIN_LATEST_VERSION on the server, test the secure activation flow, then publish the plugin.