The governance layer for AI agents.

Describe what
you want.
It's running.

PLNTH (pronounced "plinth") is a managed runtime for AI agents. Connect your tools, set a trigger, deploy in one command. Every action logged. Every cost tracked.

$ plnth agent create \
    --name pr-reviewer \
    --instructions "Review pull requests for security issues, \
      missing tests, and code style. Comment with findings." \
    --trigger github:pull_request

Agent created: agt_k8v2m
  Model:     claude-sonnet-4-6 (Junior — $5/hr)
  Trigger:   github:pull_request
  Ward:      default (all tools allowed, budget cap $10)
  Status:    running

First run started. Streaming output...
Get started free

Connect your tools in one command.

GitHub. Slack. Gmail. Linear. OAuth handles the rest.

$ plnth connect github
Opening browser for GitHub authorization...
Connected: github (repos: all, events: push, pull_request, issues)

$ plnth connect slack
Opening browser for Slack authorization...
Connected: slack (channels: invited, events: message, reaction)

$ plnth connections list
NAME STATUS SCOPES
github connected repos, events
slack     connected channels, events
gmail     connected read, send, labels
linear    connected issues, comments, projects

Set a trigger. The agent handles the rest.

Cron schedules. Webhooks. Events from connected tools. Define when your agent runs — it decides what to do.

$ plnth trigger create \
    --agent pr-reviewer \
    --event github:pull_request

Trigger created: trg_9xn4r
  Agent:   pr-reviewer (agt_k8v2m)
  Event:   github:pull_request
  Status:  active

$ plnth trigger create \
    --agent daily-digest \
    --cron "0 9 * * 1-5"

Trigger created: trg_3bw7p
  Agent:   daily-digest (agt_f1q8s)
  Cron:    weekdays at 09:00 UTC
  Status:  active

$ plnth triggers list
AGENT TRIGGER TYPE STATUS
pr-reviewer     trg_9xn4r      event      active
daily-digest    trg_3bw7p      cron       active
inbox-triage    trg_7km2v      event      active

See what it did.

Every tool call. Every decision. Every cost. The audit trail is automatic — no configuration required.

$ plnth runs list --agent pr-reviewer --limit 3
RUN TRIGGER DURATION COST STATUS
run_8v2k       github:pull_request  1m 42s      $0.14     completed
run_3n7x       github:pull_request  2m 08s      $0.19     completed
run_9p1w       github:pull_request  0m 53s      $0.07     completed

$ plnth run inspect run_8v2k
Run: run_8v2k
Agent: pr-reviewer (agt_k8v2m)
Duration: 1m 42s | Cost: $0.14 | Model: claude-sonnet-4-6

Tool calls:
  1. github.get_pull_request    → PR #247 "Add user export endpoint"
  2. github.get_pr_diff         → +142 -3 lines across 4 files
  3. github.list_pr_comments    → 0 existing comments
  4. github.create_pr_comment   → Posted review (3 findings)

Findings posted:
  - Missing input validation on export params (line 47)
  - No rate limiting on new endpoint (line 82)
  - Test coverage: 0 tests for new endpoint

Ward violations: 0 | Budget remaining: $9.86

Bring your model or use ours.

Managed intelligence starts at $5/hr. Bring your own model for $1/hr compute. Same governance either way.

defaultJunior$5/hr

General-purpose managed model. The default. Recommended.

Senior$12/hr

Higher-capability model for complex reasoning.

Expert$25/hr

Frontier model for critical, high-stakes tasks.

BYOM$1/hr

Your model, your keys. Compute and governance included.

Every tier includes: ward governance, audit trail, triggers, connectors, containment.

See full pricing — plnth.dev/pricing

Governed from the first run. Locked down when you're ready.

Every agent runs inside a ward — an infrastructure-enforced boundary that defines what the agent can access, what it can do, and what it costs. The agent cannot modify its own ward.

The default ward is permissive — but it's still a ward. All connected tools allowed, all domains reachable, budget cap enforced. The governance infrastructure is always running — even when permissions are wide open.

  • /Tool allowlistsexplicit permission for each tool call
  • /Network egress controldomain-level restrictions
  • /Credential scopingeach connection isolated per agent
  • /Budget capshard spending limits, per-second precision
  • /Audit loggingevery action recorded immutably

Wards are infrastructure-as-code. Version them. Review them in pull requests. Deploy them alongside your application.

Read the security model — plnth.dev/security
$ plnth ward show --agent pr-reviewer
Ward: wrd_d4k9m (default)
  Tools:        all connected tools allowed
  Domains:      all reachable
  Budget:       $10.00 cap ($0.14 used)
  Audit:        active (12 events logged)

$ plnth ward update --agent pr-reviewer \
    --tools github.get_pull_request,github.get_pr_diff,github.create_pr_comment \
    --domains api.github.com \
    --budget 5.00

Ward updated: wrd_d4k9m
  Tools:        3 allowed (was: all)
  Domains:      api.github.com (was: all)
  Budget:       $5.00 cap
  Audit:        active

Deploy your first agent.

Your agents. Your triggers. Your instructions. Running while you sleep.

One command to connect. One command to create. Running in under five minutes.

$ plnth login
$ plnth connect github
$ plnth agent create --name my-agent --instructions "..."
Get started free
PLNTHThe governance layer for AI agents.