|
1 | 1 | # Loop Engine |
2 | 2 |
|
3 | | -> Open runtime for governed, observable enterprise loops. |
| 3 | +> An open governed operational runtime platform for AI-assisted enterprise systems. |
4 | 4 |
|
5 | 5 | [](https://www.npmjs.com/package/@loop-engine/sdk) |
6 | 6 | [](LICENSE) |
7 | 7 | [](https://loopengine.io) |
8 | 8 |
|
9 | 9 | ## What is Loop Engine? |
10 | 10 |
|
11 | | -Loop Engine is an open runtime for governing decisions made by AI agents, humans, and automations working together. |
| 11 | +Loop Engine is an open governed operational runtime platform for AI-assisted enterprise systems. |
| 12 | + |
| 13 | +Loop Engine connects AI providers, communication channels, and enterprise systems through decision loops. |
12 | 14 |
|
13 | 15 | Every transition through a loop: |
| 16 | + |
14 | 17 | - Names the actor responsible (human, automation, or AI agent) |
15 | 18 | - Evaluates guard policies before allowing the action |
16 | | -- Attaches structured evidence - what information the actor used |
| 19 | +- Attaches structured evidence — what information the actor used |
17 | 20 | - Emits an immutable event with full attribution |
18 | 21 |
|
19 | 22 | This creates a decision record produced at runtime, not reconstructed afterward. |
20 | 23 |
|
21 | | -## Why Loop Engine? |
| 24 | +## What exists today |
| 25 | + |
| 26 | +Loop Engine is an **OSS operational substrate** you run in your environment — local-first, developer-operable, governance-native. |
| 27 | + |
| 28 | +| Capability | Status | |
| 29 | +| --- | --- | |
| 30 | +| Decision loop runtime (`@loop-engine/sdk`, `@loop-engine/runtime`) | Shipped | |
| 31 | +| Guards, actors, events, signals (core primitives) | Shipped | |
| 32 | +| Provider adapters (Anthropic, OpenAI, Gemini, Grok, Perplexity tool path) | Shipped | |
| 33 | +| Persistence adapters (memory, Postgres, Kafka) | Shipped | |
| 34 | +| Routing / human surfaces (OpenClaw, PagerDuty, Vercel AI SDK patterns) | Shipped | |
| 35 | +| Observability timelines and replay | Shipped | |
| 36 | + |
| 37 | +Install one SDK entrypoint, add adapters for your stack, define loops in YAML or TypeScript. Full taxonomy and guides live on **[loopengine.io](https://loopengine.io)** — the canonical documentation surface for this runtime. |
22 | 38 |
|
23 | | -AI systems make recommendations. Humans approve decisions. Workflows execute actions. But who governed what happened in between? |
| 39 | +## Why Loop Engine? |
24 | 40 |
|
25 | | -Loop Engine sits between AI reasoning and operational execution. It enforces who can do what, under what conditions, with what evidence. |
| 41 | +AI systems make recommendations. Humans approve on channels they already use. Enterprise systems execute side effects. Loop Engine governs what happens between them — who may transition, under which guards, with what evidence. |
26 | 42 |
|
27 | 43 | ```text |
28 | | -AI Agent |
| 44 | +Providers (intelligence) |
| 45 | + ↓ |
| 46 | +Decision loops + guards |
| 47 | + ↓ |
| 48 | +Channels (human surfaces) |
29 | 49 | ↓ |
30 | | -Loop Engine ← decision governance |
| 50 | +Integrations (enterprise systems) |
31 | 51 | ↓ |
32 | | -Workflow / ERP / Infrastructure |
| 52 | +Evidence + learning |
33 | 53 | ``` |
34 | 54 |
|
| 55 | +Loop Engine is **not** a workflow engine, Slack bot, or generic integration platform. It is governance substrate for AI-assisted operations. |
| 56 | + |
| 57 | +**Workflows define the path. Loops govern the transitions.** Durable orchestrators (Temporal, n8n, application code) may execute approved work; Loop Engine decides whether state may change and records evidence first. |
| 58 | + |
35 | 59 | ## Quick Start |
36 | 60 |
|
37 | 61 | ```bash |
@@ -94,63 +118,55 @@ await engine.transition({ |
94 | 118 | }) |
95 | 119 | ``` |
96 | 120 |
|
97 | | -## Packages |
98 | | - |
99 | | -| Package | Description | |
100 | | -|---|---| |
101 | | -| [`@loop-engine/sdk`](packages/sdk) | Main SDK - start here | |
102 | | -| [`@loop-engine/runtime`](packages/runtime) | Loop lifecycle and transitions | |
103 | | -| [`@loop-engine/observability`](packages/observability) | Timeline and replay | |
104 | | -| [`@loop-engine/adapter-memory`](packages/adapter-memory) | In-memory storage | |
105 | | -| [`@loop-engine/adapter-postgres`](packages/adapters/postgres) | PostgreSQL storage | |
106 | | -| [`@loop-engine/adapter-kafka`](packages/adapters/kafka) | Kafka event streaming | |
107 | | -| [`@loop-engine/adapter-anthropic`](packages/adapter-anthropic) | Claude AI actor | |
108 | | -| [`@loop-engine/adapter-openai`](packages/adapter-openai) | OpenAI AI actor | |
109 | | -| [`@loop-engine/adapter-grok`](packages/adapter-grok) | Grok (xAI) AI actor | |
110 | | -| [`@loop-engine/adapter-gemini`](packages/adapter-gemini) | Gemini AI actor | |
111 | | -| [`@loop-engine/adapter-perplexity`](packages/adapter-perplexity) | Perplexity Sonar (`ToolAdapter`, citations) | |
112 | | -| [`@loop-engine/adapter-openclaw`](packages/adapter-openclaw) | OpenClaw integration | |
113 | | -| [`@loop-engine/adapter-commerce-gateway`](packages/adapter-commerce-gateway) | Commerce Gateway | |
114 | | -| [`@loop-engine/adapter-pagerduty`](packages/adapter-pagerduty) | PagerDuty incidents | |
115 | | -| [`@loop-engine/adapter-vercel-ai`](packages/adapter-vercel-ai) | Vercel AI SDK | |
116 | | - |
117 | | -Core primitives are bundled in `@loop-engine/sdk`. Internal monorepo-only packages for contributors are: |
118 | | -`core`, `dsl`, `guards`, `actors`, `events`, and `signals`. |
| 121 | +## npm packages (implementation layer) |
| 122 | + |
| 123 | +`@loop-engine/*` packages implement the runtime — start with [`@loop-engine/sdk`](packages/sdk). Adapters are optional by surface: |
| 124 | + |
| 125 | +| Layer | Packages | |
| 126 | +| --- | --- | |
| 127 | +| Runtime core | `sdk`, `runtime`, `guards`, `actors`, `events`, `signals` | |
| 128 | +| Providers | `adapter-anthropic`, `adapter-openai`, `adapter-gemini`, `adapter-grok`, `adapter-perplexity` | |
| 129 | +| Channels / routing | `adapter-openclaw`, `adapter-vercel-ai`, `adapter-pagerduty` | |
| 130 | +| Integrations | `adapter-postgres`, `adapter-kafka`, `adapter-http`, `adapter-commerce-gateway`, `adapter-memory` | |
| 131 | + |
| 132 | +Contributor-only monorepo packages: `core`, `dsl`, and related internals bundled through `sdk` for app developers. |
119 | 133 |
|
120 | 134 | ## Documentation |
121 | 135 |
|
122 | | -Full docs at **[loopengine.io](https://loopengine.io)** |
| 136 | +**Canonical documentation:** **[loopengine.io/docs](https://loopengine.io/docs)** — runtime model, taxonomy, examples, and self-host paths. This repository README is a GitHub entrypoint; do not treat the package table above as the product story. |
123 | 137 |
|
124 | 138 | - [Quick Start](https://loopengine.io/docs/getting-started/quick-start) |
125 | | -- [Core Concepts](https://loopengine.io/docs/core-concepts) |
126 | | -- [Examples](https://loopengine.io/docs/examples) |
| 139 | +- [Architecture](https://loopengine.io/docs/getting-started/architecture) |
127 | 140 | - [Integrations](https://loopengine.io/docs/integrations) |
128 | | -- [Perplexity Sonar & Computer (OSS)](docs/integrations-perplexity.md) |
| 141 | +- [Examples](https://loopengine.io/docs/examples) |
129 | 142 |
|
130 | | -## Examples |
| 143 | +## Loop Engine Cloud (hosted boundary) |
| 144 | + |
| 145 | +**Loop Engine** (this repo) is the open runtime you self-host. |
131 | 146 |
|
132 | | -Runnable examples in [github.com/loopengine/loop-examples](https://github.com/loopengine/loop-examples): |
| 147 | +**Loop Engine Cloud** is Better Data’s hosted governance control plane — multi-tenant runtime, connectors, and API keys at [loops.betterdata.co](https://loops.betterdata.co). Contract and operational details: [loopengine.io/docs/integrations/loop-engine-cloud-api](https://loopengine.io/docs/integrations/loop-engine-cloud-api). |
133 | 148 |
|
134 | | -- Expense Approval - human-only approval gate |
135 | | -- AI Replenishment - Claude + OpenAI as governed actors |
136 | | -- Demand Signal - rule-based loop triggering |
137 | | -- Postgres Persistence - production storage adapter |
138 | | -- Event Streaming - Kafka event pipeline |
| 149 | +We do not claim feature parity between every OSS adapter and Cloud connectors in this README; see hosted docs for what is available in your tenant. |
| 150 | + |
| 151 | +## Platform direction |
| 152 | + |
| 153 | +Roadmap themes (not delivery commitments): richer runtime taxonomy docs on loopengine.io, expanded channel adapters, and deeper hosted connector coverage. We avoid promising undelivered surfaces (e.g. multi-service compose stacks or studio products) in OSS copy — direction is shared on [loopengine.io/changelog](https://loopengine.io/docs/changelog) and GitHub discussions. |
| 154 | + |
| 155 | +## Examples |
| 156 | + |
| 157 | +Reference walkthroughs on [loopengine.io/docs/examples](https://loopengine.io/docs/examples). The [loop-examples](https://github.com/loopengine/loop-examples) repository is being brought up to match current SDK APIs — verify runnable status before citing copy-paste flows. |
139 | 158 |
|
140 | 159 | ## Contributing |
141 | 160 |
|
142 | | -See [CONTRIBUTING.md](CONTRIBUTING.md). Open issues and RFCs at [github.com/loopengine/loop-engine/discussions](https://github.com/loopengine/loop-engine/discussions). |
| 161 | +See [CONTRIBUTING.md](CONTRIBUTING.md). RFCs and discussions: [github.com/loopengine/loop-engine/discussions](https://github.com/loopengine/loop-engine/discussions). |
143 | 162 |
|
144 | | -## Provenance and package trust |
| 163 | +## Provenance |
145 | 164 |
|
146 | 165 | - **Canonical repository:** https://github.com/loopengine/loop-engine |
147 | | -- **Maintainer organization:** Better Data, Inc. (https://betterdata.co) |
148 | | -- **Package family:** `@loop-engine/*` packages in `packages/` |
149 | | -- **Issue tracker:** https://github.com/loopengine/loop-engine/issues |
150 | | -- **Documentation site:** https://loopengine.io |
| 166 | +- **Maintainer:** Better Data, Inc. — https://betterdata.co |
| 167 | +- **Documentation:** https://loopengine.io |
| 168 | +- **Issues:** https://github.com/loopengine/loop-engine/issues |
151 | 169 |
|
152 | 170 | ## License |
153 | 171 |
|
154 | | -Apache-2.0 - see [LICENSE](LICENSE) for details. |
155 | | - |
156 | | -Created and maintained by [Better Data](https://betterdata.co). |
| 172 | +Apache-2.0 — see [LICENSE](LICENSE). |
0 commit comments