LoopEngineBETA

Durable · Permission-gated · Multi-channel

LoopEngine

One command to an enterprise-grade agent platform — durable human approval, multi-channel alerts, and installable abilities, built in from day one.

$ npx create-loopengine@latest my-agents

01 · Install

Install LoopEngine

One command scaffolds a real project — three channel adapters (cli, http, http_stream), an example agent, permission rules, and a playground. No infra to build first.

  • An agents/ folder with a working example agent — one folder per agent, auto-discovered
  • actauth.yml permission rules wired in from the first run
  • The Admin UI and playground served by the same dev server
$ npx create-loopengine@latest my-agents
$ cd my-agents
$ cp .env.example .env
$ npx loopengine dev
→ HTTP server on :8787 — playground, Admin UI, and agent routes live
localhost:8787/agents/config
OverviewToolsActAuth
+ Create new agent
System prompt
You are the customer-service agent. Look up orders, share tracking info freely, and route refunds through approval…
Model
anthropic / claude-sonnet-5

02 · Configure

Create and configure agents in the browser

The Admin UI at /agents/config ships with the scaffold. Its Create new agent button scaffolds a real agent folder on disk — the same way the CLI does — and the Overview tab edits system prompts and models straight from the browser. The Tools tab connects external tool sources (Composio-backed — Gmail, Slack, GitHub, and more) with a picker; the ActAuth tab edits permission rules without hand-editing YAML.

03 · Interact

Interact with your agents

Three channel adapters, built in — each resolves to the right approval behavior automatically. And before wiring anything durable, open /playground in a browser: send a real message, watch tool calls and permission decisions stream live, and approve or deny a gated call right there.

cli

Run a turn from a terminal or a script. Approvals block on stdin.

$ npx loopengine run customer-service \ --session s1 "order A-1001 arrived broken"

http

One POST, one reply. Approvals go durable — there's no open connection to hold.

$ curl -X POST localhost:8787/agents/\ customer-service/messages \ -d '{"message": "order A-1001 arrived broken"}'

http_stream

Add /stream for Server-Sent Events — one event per loop step, with live approval prompts.

$ curl -N localhost:8787/agents/\ customer-service/messages/stream …
event: tool_call · permission_decision · reply

04 · Extend

Add abilities to your agent

An ability was never just a tool. An ability bundles everything one capability needs, added to your own repo as real, reviewable files with one command — not an opaque dependency.

$ npx loopengine add-ability lp-web-search --agent customer-service
+ tools/web_search.ts · tools/web_fetch.ts
+ skills/web-search/SKILL.md
+ actauth.yml: web-search-allowed, web-fetch-allowed
Browse all abilities →
Toolsthe functions the model can call
A skillteaching the agent when to reach for them
ActAuth rulesgating what runs without approval
Env var docsso setup is one .env edit, not a hunt

05 · Human in the loop

Human approval for dangerous actions

actauth.yml decides allow, ask, or deny per tool call — including content-conditional gating on the model's own arguments. An ask pauses the run at a durable checkpoint instead of blocking, notifies a human over Slack, email, webhook, or wherever you point it, and resumes minutes or days later. No queue, no state machine, no crash-recovery logic to write yourself.

agents/customer-service/actauth.yml
default_decision: deny
rules:
- tool: lookup_order
decision: allow
- tool: issue_refund
scope: "*/production"
decision: ask # pause → notify a human → resume
Approval requestedPAUSED · durable

customer-service wants to call issue_refund

{ "order": "A-1001", "amount": 129.00 }
ApproveDeny

Delivered over Slack, email, webhook, Lark, database, or Redis — the run resumes from its checkpoint whenever the answer comes, restarts in between and all.

07 · Spread the loop

Share LoopEngine

LoopEngine is open source and better with more agents in the wild. Star it, post it, or hand a teammate the one command that gets them a running agent platform.

$ npx create-loopengine@latest my-agents