Skip to content

Latest commit

 

History

159 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SELAT plugins

Install SELAT in any agent harness — Claude Code, Codex, Cursor, Gemini CLI, or a plain CLI — so the agent can discover and pay for capabilities beyond its native abilities, settling each payment from the user's own Circle Agent Wallet (MPC self-custody). SELAT never sees a private key or holds the user's funds.

Get started — paste this to your agent

Copy this into your coding agent (Claude Code, Codex, Cursor, Gemini CLI, …) and it will set SELAT up for you:

Help me set up SELAT — it lets you find and pay for tools you don't have built in (image/video/audio generation, web scraping, live and on-chain data), paid from my own crypto wallet that I control. Read github.com/SELAT-AI/selat-plugins and follow the setup for your harness. Don't create or fund a wallet for me — guide me and I'll approve it.

Prefer to do it yourself? See Install per harness below. On a supported harness, use the plugin installer (reviewed pin + lock, npm ci --ignore-scripts). The no-plugin fallback is the pinned CLI in guides/generic.md (@selat-ai/selat-cli@0.16.18 --ignore-scripts — not @latest). Agents: the step-by-step runbook is install.md.

Marketplace repo: SELAT-AI/selat-plugins — the third SELAT distribution surface (after the npm package and the published skill). Prefer the plugin install below (reviewed pin + lock). The no-plugin fallback is guides/generic.md: npm i -g @selat-ai/selat-cli@0.16.18 --ignore-scripts then selat init. Do not install @latest as the payment path.

What this is

A small plugin/marketplace monorepo that wraps the published @selat-ai/selat-cli runner. The CLI package bundles everything in one install:

  • @selat-ai/selat-cli — the selat runner
  • @selat-ai/selat-discovery — the discovery skill (the published source of truth)
  • @selat-ai/selat-pay — the pay engine (Circle MPC signing + x402 batching)

So installing the pinned @selat-ai/selat-cli package = runner + skill + pay. This repo adds the thin plugin layer (manifests, hooks, a driver skill, per-harness guides) that auto-installs the reviewed runtime closure (pin file + lock, npm ci --ignore-scripts) and wires that runner into each host.

How SELAT differs from a flat capability index

  • Two-tier discovery. SELAT checks vetted, evaluated multi-step skills first (SELAT-AI/selat-skills), then falls back to a federated x402 / MPP endpoint catalog (Circle + MPP + Apify + pay.sh + SELAT's own catalog.selat.ai, merged). A flat index is one-tier. Discovery itself is freeselat search "<intent>" ranks candidates with no wallet or spend; only selat run / selat skill run pay.
  • Self-custody. Payments settle from the user's own Circle Agent Wallet (MPC). SELAT never holds keys or balance. Because a wallet is real onboarding, the plugin detects and guides — it never silently provisions a wallet or moves funds.

Self-custody note (read this)

What "MPC self-custody" means concretely: the Circle Agent Wallet uses 2-of-2 MPC key management — the private key exists only as two key shares, both required to sign, and per Circle's docs the shares are never exposed to the agent (or to SELAT) and Circle cannot unilaterally move funds without the user's involvement. Signing is authorized by the user's email-OTP session; spending-policy writes require a fresh human OTP. SELAT signs only through the Circle CLI — it never holds a key share, funds, or login credentials.

The SessionStart hook does not create a wallet or move money. It installs/updates the runner, then runs selat doctor to check setup. If the wallet/config is missing, it tells the agent that free discovery (selat search, selat skill list, selat doctor) works now with no wallet — and to ask the user and wait before selat init, a Circle OTP, or any spend (do not auto-run init). Paid calls need an armed session budget (selat budget start); selat freeze is the kill switch. Read-only discovery (selat search, selat doctor, selat history, selat skill list) is auto-approved; anything that spends or moves money (selat run, selat skill run, selat fund, selat setup-policy) always requires explicit approval.

Install per harness

Prerequisites: Node.js ≥ 18 (ships with npm). No Python needed.

Harness Guide Quick install
Claude Code guides/claude-code.md /plugin marketplace add SELAT-AI/selat-plugins then /plugin install selat@selat-plugins
Codex guides/codex.md codex plugin marketplace add SELAT-AI/selat-plugins then codex plugin add selat@selat-plugins
Grok Build install.md#grok-build grok plugin marketplace add SELAT-AI/selat-plugins then grok plugin install selat --trust, then npm install -g @selat-ai/selat-cli (plugin SessionStart hooks don't execute in grok 1.0.5, so Grok gets the floating npm runner, not the reviewed pin + lock — see guides/grok-plugin-hook-gap.md)
Cursor guides/cursor.md Customize → Marketplace (or paste the prompt above). Then allowlist SELAT in .cursor/sandbox.json — see the guide
Gemini CLI guides/gemini-cli.md gemini extensions install https://github.com/SELAT-AI/selat-plugins (no spend hook, no locked runner; --auto-update is not the default)
OpenClaw guides/openclaw.md openclaw plugins install selat --marketplace https://github.com/SELAT-AI/selat-plugins (bundle auto-detect)
Hermes guides/hermes.md hermes plugins install SELAT-AI/selat-plugins/plugins/selat-hermes --enable — the subdirectory path is required (the bare repo form buries the plugin at plugins/selat-plugins/plugins/selat-hermes/; see the guide). The plugin vendors the pin + lock and installs the reviewed runner
Any other / none guides/generic.md npm i -g @selat-ai/selat-cli@0.16.18 --ignore-scripts then selat init (not @latest)

After install, every harness runs the same first-time setup (self-custody):

selat init      # checks skill, Circle auth, Agent Wallet, selat-pay, config — installs Circle CLI if missing
selat doctor    # confirm everything is green

Layout

.claude-plugin/marketplace.json      # Claude Code marketplace
.agents/plugins/marketplace.json     # .agents-style marketplace
plugins/
  selat/
    .claude-plugin/plugin.json       # Claude Code manifest
    .codex-plugin/plugin.json        # Codex manifest
    .cursor-plugin/plugin.json       # Cursor manifest (skills + rules + hooks)
    package.json                     # Antigravity manifest
    AGENTS.md                        # standing context for Codex/OpenClaw/Antigravity
                                     #   (OpenClaw consumes the bundle layout + AGENTS.md; no native manifest)
    rules/
      selat.mdc                      # Cursor standing reminder (alwaysApply rule — Cursor's
                                     #   beforeSubmitPrompt can't inject context, so the nudge lives here)
    hooks/
      hooks.json                     # Claude Code: SessionStart, UserPromptSubmit, PreToolUse(Bash), PostToolUse
      hooks-cursor.json              # Cursor: sessionStart, beforeShellExecution(matcher: selat)
    hooks-handlers/                  # scripts (Anthropic convention: wiring in hooks/, scripts here)
      ensure-runner.sh               # SessionStart: DETECT + GUIDE (never auto-creates a wallet); installs
                                     #   the reviewed pin+lock via npm ci --ignore-scripts; shell-rc PATH edit is opt-in
      selat-context.sh               # Claude UserPromptSubmit availability reminder (cat <<'EOF' heredoc)
      auto-approve-selat.sh          # Claude PreToolUse: auto-approve BARE READ-ONLY selat only (thin wrapper)
      auto-approve-selat-cursor.sh   # Cursor beforeShellExecution: same policy, Cursor permission schema
      selat-fallback.sh              # PostToolUse: nudge toward SELAT after an access/auth/paywall failure
      lib/
        classify-selat.sh            # shared decode + classify core for both auto-approve hooks (fail-closed)
      selat-cli.version              # pinned @selat-ai/selat-cli version — source of truth for what installs
      selat-runtime-package.json     # reviewed CLI + discovery + pay versions
      selat-runtime-package-lock.json
      check-approve.sh               # regression harness asserting the auto-approve classifier verdicts
      run-hook.cmd                   # polyglot Windows/Unix wrapper (cross-OS hook support)
    skills/
      selat-discovery/SKILL.md       # driver skill (the two-tier loop)
  selat-gemini/
    gemini-extension.json            # Gemini variant (contextFileName; no mcpServers)
    GEMINI.md                        # Gemini standing context (replaces a prompt hook)
  selat-hermes/
    plugin.yaml                      # Hermes plugin manifest
    __init__.py                      # register() installs the reviewed runtime (fail-closed if pin/lock missing)
    after-install.md                 # post-install note shown after the plugin is enabled
    selat-cli.version              # vendored pin for the subdirectory install
    selat-runtime-package.json     # vendored reviewed manifest
    selat-runtime-package-lock.json
guides/
  claude-code.md  codex.md  cursor.md  gemini-cli.md  openclaw.md  hermes.md  generic.md
.github/
  workflows/sync-selat-cli-version.yml   # coordinated runtime release (manual): regenerates pin + lock, opens a review PR
  workflows/validate-selat-runtime-lock.yml
  scripts/regenerate-selat-runtime-lock.sh
  scripts/validate-selat-runtime-lock.sh
  SELAT_RUNTIME_RELEASE.md

Standing-reminder mechanism differs by harness: a UserPromptSubmit hook on Claude Code (it can inject per-prompt context); an alwaysApply rule (rules/selat.mdc) on Cursor (its beforeSubmitPrompt hook is block-only and can't inject context, so the nudge lives in a rule); a context file (GEMINI.md / AGENTS.md) on Gemini / Codex / OpenClaw / Antigravity, which have no per-prompt context hook. Runner provisioning is a sessionStart hook on both Claude Code and Cursor. Discovery is free everywhere (no wallet); the agent asks and waits before selat init when a paid call is needed — it installs the Circle CLI + drives the wallet login (the user enters the OTP), and funding stays manual. Paid calls need user approval and an armed session budget.

MCP vs this plugin. Hosted discovery MCP lives at https://catalog.selat.ai/mcp (search + quotes; spend stays local). This repo's harness plugins wrap the selat CLI and do not ship .mcp.json or an mcpServers block.

About

Official SELAT plugins — discover vetted skills and federated x402/MPP capabilities, pay from your own Circle Agent Wallet (self-custody), from any agent.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages