trinity Plugin
Connect, deploy, operate, and sync agents on the Trinity platform. Seven skills covering the complete lifecycle — from a guided first journey through connection, deployment, remote loops, and instance provisioning.
Build Autonomous Loops for Your AI Agents
Jun 2026
🧭 New to Trinity? Start with /trinity:start-here — a guided, resumable walkthrough that takes you from “what is Trinity?” to your first agent running on your own instance. Jump to the section ↓
Installation
/plugin install trinity@abilityai
Skills
| Skill | Description |
|---|---|
| /trinity:start-here | New here? Guided, resumable journey: what Trinity is → get an instance → connect → first agent alive |
| /trinity:connect | One-time: authenticate and configure the MCP connection |
| /trinity:onboard | Per-agent: compatibility check, file creation, deploy from the repo - or, run inside an already-deployed agent, onboard it in place |
| /trinity:sync | Ongoing: git-based sync between your repo and the deployed agent, multi-remote, with schedule and plugin reconciliation |
| /trinity:loop | Run a remote agent task in a sequential, bounded loop - fire once, disconnect, check back |
| /trinity:create-dashboard | Generate an agent-specific /update-dashboard skill that keeps dashboard.yaml current |
| /trinity:deploy-new-instance | Deploy a Trinity instance on any server and scaffold an ops agent to manage it |
The Guided Journey: /trinity:start-here
/plugin marketplace add abilityai/abilities /plugin install trinity@abilityai /trinity:start-here
One command that concierges a newcomer through the whole path — it sequences the skills below rather than replacing them, so you never have to know which one comes next.
| Stage | What happens |
|---|---|
| Orient | What Trinity is, in plain terms, plus the current release |
| Choose your door | Just looking · build my first agent · I already have agents · set up my instance |
| Get an instance | Hands off to /trinity:deploy-new-instance (cloud, your server, or local Docker) — or takes the URL you already have |
| Connect + verify | Hands off to /trinity:connect, then runs a live smoke test: fleet visible, instance healthy, docs assistant online |
| First agent alive | Deploys via /trinity:onboard (or picks an existing agent) and exchanges a real message with it |
~/.trinity/start-here.json, so quitting — or the Claude Code restart needed to load the MCP server — picks up exactly where you stopped. Run /trinity:start-here reset to start over.ask_trinity tool afterward.Already know what you want? The individual skills below work standalone, in any order.
How It Works
Step 1: Connect (One-Time)
/trinity:connect
This:
.mcp.json pointing at <instance-url>/mcp - the production frontend serves that path, so it works on installs that expose only ports 80/443; it falls back to the MCP server's own port 8080 when the route is not servedAn account that requires a second factor stops after step 2: complete the sign-in in the web UI, create the key under Settings → API Keys, then re-run /trinity:connect --force. See Authentication.
After connecting, Trinity MCP tools become available: mcp__trinity__list_agents, mcp__trinity__chat_with_agent, mcp__trinity__deploy_local_agent, mcp__trinity__run_agent_loop (and the rest of the tool surface)
Step 2: Add your GitHub token (One-Time)
Deployment is repository-first: Trinity clones the agent straight from its GitHub repo and tracks the branch. In the Trinity UI, go to Settings → GitHub token and add a fine-grained PAT with Contents: Read on the repos your agents live in. Public repos work without a token; private repos don't. See GitHub PAT Setup.
Step 3: Onboard (Per Agent)
/trinity:onboard # asks what you want: deploy, adapt only, or onboard in place /trinity:onboard analyze # report only — no changes /trinity:onboard in-place # force the in-place path (see below)
Run it in the agent's directory. It analyzes the current state, then:
template.yaml (with plugins:, schedules:, and credential declarations), .env.example, .gitignore, .mcp.json.templatecreate_agent with github:owner/repo@branch); from a local archive as the fallback when the repo doesn't exist yet or the instance can't reach GitHub, with an offer to promote the agent onto the repo path afterwards.env) after deploy, since they are never in the clone or the archiveTwo things it will tell you and you cannot skip: declared schedules arm only on a literal enabled: true, and a newly created agent's autonomy toggle is off - until you turn it on in the UI, the scheduler skips every cron trigger for that agent.
There are three ways an agent gets onto Trinity:
| Path | When | What happens |
|---|---|---|
| From the GitHub repo (default) | The agent is adapted and pushed | Trinity clones the repo, tracks the branch, materializes declared schedules and plugins at creation |
| From local files (fallback) | No repo yet, air-gapped instance, or a throwaway | A snapshot of your directory is deployed; promote it onto the repo path with initialize_github_sync before it becomes long-lived |
| Deploy as-is, then onboard in place | A repo you can't or shouldn't adapt locally - someone else's agent, a bare repo with no template.yaml | Create the agent from the bare repo first (Trinity tolerates a missing template.yaml), then run /trinity:onboard inside that agent - see below |
Step 4: Sync (Ongoing)
/trinity:sync # status of every remote /trinity:sync push [@remote] [branch] /trinity:sync pull [@remote] /trinity:sync deploy [@remote] <branch> /trinity:sync remotes | add-remote <name> <agent> [branch] | set-default <name> /trinity:sync schedules [@remote] # reconcile template.yaml schedules: against the live agent /trinity:sync plugins [@remote] # reconcile template.yaml plugins: against what's installed
Sync is git-based and multi-remote - a .trinity-remote.yaml registry lets one repo serve several instances (production, staging), each tracking its own branch. push advances the deployed agent to your new commit; pull brings the agent's own commits back; deploy switches a remote to another branch.
schedules and plugins treat template.yaml as the design truth and the operator as owner of the live extras: they create or install what is declared but missing, and report what is live but undeclared - never delete, never uninstall. Both also run automatically after push, pull, and deploy, and read-only in status. plugins reads what is installed from the platform's compatibility report first, and only falls back to the CLI inside the container. A plugin installed by reconciliation loads on the agent's next execution.
Onboarding a Deployed Agent In Place
When /trinity:onboard detects it is running inside a deployed Trinity agent - the agent's own workspace, with the platform's MCP tools already injected - it offers Onboard in place as the recommended goal (or take it directly with /trinity:onboard in-place, which is also the one-line form an orchestrator dispatches after deploying a bare repo). Nothing is created; the agent already exists. Instead it:
template.yaml (with plugins: declaring at least trinity@abilityai), .env.example, .gitignore, .mcp.json.template if the agent runs MCP servers of its ownget_agent_compatibility_report - every HARD finding is yours to fix; SOFT and AI findings are advisoryThe trinity plugin is provided by the platform. The in-place path needs the plugin present in the container, and a bare repo declares nothing - so Trinity's agent image ships with it pre-installed, and every container boot re-installs it if missing, whether or not template.yaml declares it. A new agent therefore runs /trinity:onboard in-place straight away. Only an agent still running on an image built before the pre-install needs the one-time bootstrap from its terminal, followed by a fresh session:
claude plugin marketplace add abilityai/abilities && claude plugin install trinity@abilityai --yes
Onboarding in place is idempotent - if the push was refused, grant the agent write credentials and re-run.
Remote Loops: /trinity:loop
The remote counterpart to Claude Code's built-in /loop. Where /loop re-invokes your local session on a cadence, /trinity:loop hands one bounded, sequential loop to a remote Trinity agent: it fires run_agent_loop once, returns a loop_id, and you can disconnect - the Trinity backend runs every iteration in order and exits on a hard cap or a stop signal. Use it for iterative refinement, agentic retry, and bounded polling that must outlive your session.
/trinity:loop [@agent] <message> start a loop /trinity:loop status <loop_id> show per-run progress /trinity:loop stop <loop_id> request a graceful stop /trinity:loop local <message> run the same bounded loop in this session
No @agent means this agent's remote copy - the usual case is looping your own remote counterpart on Trinity (resolved from .trinity-remote.yaml or by name match).
Modifiers, anywhere in the message:
| Modifier | Effect |
|---|---|
| 5 times / x5 / max 10 | Iteration cap (max_runs, 1-100; default 5) |
| every 2m / every 30s | Pause between iterations (delay_seconds, up to 1 hour - for slower cadences, use a schedule instead) |
| until <condition> / stop when ... | Until mode - the skill rewrites the message so the agent emits a [[DONE]] sentinel when the condition is met, and the loop exits early |
Examples:
/trinity:loop @researcher draft section {{run}} of the report, 5 times
/trinity:loop @ci-agent run the test suite until it passes, max 10
/trinity:loop @monitor poll the deploy every 2m until it's healthy
/trinity:loop status loop_a1b2c3
/trinity:loop stop loop_a1b2c3After firing, the skill starts a lightweight local watch by default - it polls the loop and reports run-by-run progress, stalls, and the final result. Say "fire and forget" to skip the watch; the remote loop runs either way and also appears on the agent's Loops tab in the Trinity web UI. Inside a deployed Trinity agent there is no watch - the wake-up tools it relies on are denied there - so poll with /trinity:loop status or a set_reminder instead.
local runs the same Fixed or Until loop natively in your Claude Code session - no Trinity connection, no loop_id. Use it when the task lives on this machine or Trinity is unreachable; if the loop must outlive your session, it is remote.
The loop mechanics - modes, template variables, stop signals, capacity, costs - are the platform's Sequential Agent Loops feature.
When to use what
Dashboard Generation: /trinity:create-dashboard
/trinity:create-dashboard
Analyzes the agent's purpose and data sources, proposes a set of metrics, and - after your approval - scaffolds an agent-specific /update-dashboard skill that keeps dashboard.yaml current. Declare that skill's cron in template.yaml schedules:to keep the agent's dashboard live.
The generated skill writes only widget types Trinity renders - metric, status, progress, text, markdown, table, list, link, image, divider, spacer; anything else is stripped by the agent. There is no chart type: trend lines and sparklines come from the platform, which records each metric and progress widget's value on every fetch, keyed by the widget's stable id: - so the skill gives those widgets an id (reordering unkeyed widgets orphans their history) and never emits YAML anchors, which Trinity's hardened loader rejects. See Dynamic Dashboards.
Instance Provisioning: /trinity:deploy-new-instance
/trinity:deploy-new-instance
Deploys a complete Trinity instance - on a cloud host, any server you can reach over SSH, or local Docker; fresh installs and existing instances both - and scaffolds a dedicated ops agent with 13 skills to manage it (health checks, updates, rollbacks, provisioning). It builds from source or pulls prebuilt images (start.sh --hosted with a pinned TRINITY_IMAGE_TAG), seeds the admin account from .env so there is no first-run setup screen, and needs only the frontend port opened in the firewall - the MCP server is reachable through it at /mcp. See Deploying Trinity and the Trinity Ops Agent.
Alternative: Trinity CLI
You can also deploy via the command line:
# Install CLI pip install trinity-cli # Initialize (one-time) trinity init # Deploy agent trinity deploy .
See Trinity CLI for details.
Compatibility Requirements
Agents must have:
| File | Purpose |
|---|---|
| CLAUDE.md | Agent identity and instructions |
| template.yaml | Trinity metadata (name, description, resources, declared schedules and plugins) |
| .env.example | Documents required environment variables |
Optional but recommended: dashboard.yaml (custom metrics dashboard), .mcp.json.template (MCP server configuration), template.yaml schedules: (declared recurring work, materialized at creation), and template.yaml plugins: (declared Claude Code plugins, re-installed on every boot - declare trinity@abilityai at minimum so the intent is in the repo; the platform provides that one plugin on every boot even when it is undeclared)
The authoritative verdict is the platform's compatibility report (Agent Detail → Overview), which /trinity:onboard runs at the end of every path. See Creating Agents.
See Also
/trinity:loop drives