Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

intended-so/intendedops

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

56 Commits

Repository files navigation

IntendedOps

The Governed Back-Office Operating System for SaaS.

IntendedOps is an open-source platform for running your SaaS back office with deterministic agents — scheduled and event-driven jobs like billing dunning, refund processing, and support triage — that cannot take a consequential action without governance approval. Every action is proposed, evaluated against trust tiers and policy, executed only if allowed, and audited end to end.

It is provider-agnostic: your database, auth, governance engine, email, and payments are each a config-selected adapter. Nothing is hardwired. Run it locally on SQLite in a couple of minutes, or deploy it into your own AWS account with one CloudFormation stack.

Honest framing. The agents that run your operations are plain deterministic code — no LLM in the action path. A model never decides what executes. There is a separate, optional natural-language Copilot (Settings → AI Providers) that uses an LLM you supply purely to draft governed intents for a human to approve; it has no execution authority of its own.


The governance model

Every consequential action follows the same path, regardless of which agent proposes it or which governance engine decides:

 Agent (deterministic) Governance Execution
 ┌──────────────────┐ ┌──────────────┐ ┌───────────┐
 │ cron / event job │ │ EVALUATE │ │ adapter │
 │ "I want to do X" │──────▶ │ ALLOW │──ALLOW──▶ │ runs X │──▶ Audit
 └──────────────────┘ Intent │ ESCALATE │ └───────────┘ (every
 │ DENY │ さんかく outcome
 └──────┬───────┘ │ recorded)
 │ ESCALATE │
 ▼ │
 human approval ───────────────┘

Guarantees, enforced by the pipeline:

Guarantee What it means
No direct action An agent proposes an intent; it never executes directly. The governance decision gates the adapter.
Fail-closed Error, uncertainty, or an unreachable governance engine results in DENY + escalation — never a silent allow.
Cannot be bypassed There is no code path from proposal to execution that skips evaluation, trust checks, or audit.
Every outcome audited Each execution emits an auditable outcome record.
Humans approve high-impact T3+ actions require explicit human authorization (see Trust tiers).

Governance itself is pluggable — this is the open-core seam. Run the native engine (a self-contained, in-process policy + trust evaluator) for free, or flip governance.provider to intended to route every decision to the Intended runtime — a separate, paid hosted service that returns cryptographically signed authority decisions. Same governance contract either way; flipping the provider changes the deciding engine for the whole app, not a demo path. See Upgrading to the Intended runtime.


Quickstart

There are two honest paths. Pick the one that matches what you're doing.

Local — clone, install, run (genuinely a couple of minutes)

The default stack — SQLite + built-in auth + native governance + console email — needs no external service and no secrets.

git clone https://github.com/intended-so/intendedops.git
cd intendedops
pnpm install
pnpm dev:web # web app on http://localhost:3006

An unconfigured deploy redirects to http://localhost:3006/setup — a six-step wizard (Database → Auth → Governance → Email → Payment → Review) that lets you choose each provider, test the connection live, then provisions the schema, writes your choices to intendedops.config.ts and your secrets to a gitignored .env.local, and marks setup complete.

Want to skip the wizard? IntendedOps also boots straight from config + env — commit intendedops.config.ts and supply secrets via the environment (see Configuration). That's the path CI and the AWS deploy use.

Production — one-click into your own AWS (BYOC)

deploy/aws/ ships a CloudFormation template that stands up the full back-office inside your own AWS account: an App Runner service running the apps/web container, backed by a private RDS Postgres, in a dedicated VPC, with secrets in Secrets Manager. The app auto-creates its schema on first boot.

Because you run the template from your CloudFormation console, your Intended API key (if you use the hosted runtime) goes straight into your Secrets Manager and never reaches the vendor.

Honest status. The template is real and complete. Two operator publishing steps are required before the launch URL is literally one click for a stranger: publishing the container image to a registry App Runner can pull, and hosting the template on S3. These are vendor steps, not yet done in this repo, and are documented plainly. See deploy/aws/DEPLOY-AWS.md .

A Dockerfile (repo root) builds the apps/web container for any container host (App Runner, ECS, Fly, Railway, a VM). See Configuration for the environment variables it expects.


Configuration

Every external dependency is a config-selected adapter. Pick what you run, or let the /setup wizard pick and test it for you.

// intendedops.config.ts
import { defineConfig } from '@intendedops/config';
export default defineConfig({
 name: 'My SaaS',
 database: { provider: 'postgres', url: process.env.DATABASE_URL },
 auth: { provider: 'builtin' },
 email: { provider: 'resend', from: 'noreply@mysaas.com' },
 payments: { provider: 'stripe' },
 governance: { provider: 'native' }, // or 'intended' for the hosted runtime
});

Provider matrix

Layer Options Default Secrets (env)
Database sqlite · postgres (RDS / any PG) · supabase sqlite DATABASE_URL (postgres) / file path (sqlite)
Auth builtin (sessions in your DB, scrypt) · supabase builtin none for builtin
Governance native (local engine, free) · intended (hosted runtime, paid) · saas (any contract-compatible authority) native INTENDED_API_KEY, INTENDED_TENANT_ID, INTENDED_API_URL for intended
Email console · smtp · resend · noop console RESEND_API_KEY / SMTP_HOST...
Payment stripe · none none STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET...

sqlite + builtin + native + console each need no external service and no secret — that's the zero-config local path. Supabase is one option among several, never a requirement. The full env-var reference is in RUN-ON-YOUR-STACK.md .

Auth note: builtin needs both INTENDEDOPS_AUTH_PROVIDER=builtin (server) and NEXT_PUBLIC_AUTH_PROVIDER=builtin (client). The wizard and the AWS template set both. Builtin signup logs you in immediately; magic-link/MFA are Supabase-only.


Trust tiers

Every agent action is evaluated against a trust tier before execution. The tier determines whether a human must approve.

Tier Capabilities Approval
T0 — Observe Read-only, reports None
T1 — Draft Create drafts, stage changes None
T2 — Execute (low risk) Reversible operations None
T3 — Execute (high impact) Significant business operations Single approver
T4 — Break glass Emergency override Dual approver + audit

Upgrading to the Intended runtime

The native engine is designed for startups and small teams and runs entirely in-process. When you need cryptographically signed authority decisions, Open Intent classification, and independently verifiable audit evidence, point the same governance contract at the Intended runtime — a separate hosted service:

// Before — local engine, free, no external dependency
governance: { provider: 'native' }
// After — route every decision to the Intended hosted runtime
governance: {
 provider: 'intended',
 apiKey: process.env.INTENDED_API_KEY,
 config: { tenantId: process.env.INTENDED_TENANT_ID },
}

No code changes, no migration — the agents, domains, and adapters are unchanged. The runtime is a service you point at; its decision engine is a separate product, not part of this repository. If the runtime is misconfigured or unreachable, the provider fails closed (DENY), never silently degrading. Learn more at intended.so.


Architecture & project layout

intendedops/
├── packages/
│ ├── config/ # Config system (Zod-validated, provider selection)
│ ├── contracts/ # Shared TypeScript interfaces & intent types
│ ├── core/ # Intent, policy, and trust engines
│ ├── data/ # DataConnector contract + portable schema/migrations
│ ├── agents/ # Deterministic agent framework (no LLM)
│ ├── adapters/ # Adapter framework
│ ├── governance-contracts/ # Shared governance contract types
│ ├── sdk/ # Client SDK
│ ├── billing/ # Billing state machines
│ └── <db|auth|email|payment|ai|storage|queue|cache|notification>-* # adapter packages
│
├── domains/ # Back-office domain agents
│ ├── billing/ # ✅ full agent (reference implementation)
│ ├── support/ # ✅ full agent (reference implementation)
│ ├── identity/ sales/ contracts/ compliance/ vendors/
│ │ # ◻︎ intent types defined; full agent welcome (see CONTRIBUTING)
│
├── governance-providers/
│ ├── native/ # Built-in in-process engine (free default)
│ ├── intended/ # Connector to the Intended hosted runtime (paid)
│ ├── saas/ # Connector to any contract-compatible authority
│ └── factory/ # Selects the engine from config.governance.provider
│
├── services/
│ ├── api/ # REST API server
│ ├── auth/ # Authentication service
│ ├── ledger/ # Audit ledger service
│ └── worker/ # Background job worker
│
├── apps/
│ ├── web/ # Customer-facing app + operator dashboard (Next.js)
│ └── console/ # Operator console (Next.js)
│
├── adapters/
│ ├── stripe/ zendesk/ # External-system adapters
│
├── deploy/aws/ # CloudFormation BYOC deploy (App Runner + RDS)
├── Dockerfile # apps/web container image
└── docs/ # Deeper specs (see Documentation)

Development

pnpm install # install workspace dependencies
pnpm build # build all packages (Turborepo)
pnpm typecheck # type-check the workspace
pnpm test # run the integration suite (Vitest)
pnpm dev:web # run the web app on :3006

Documentation

Doc What it covers
RUN-ON-YOUR-STACK.md Provider matrix, env vars, the zero-Supabase setup
deploy/aws/DEPLOY-AWS.md One-stack BYOC deploy into your own AWS account
DOGFOOD.md Governing IntendedOps' own agents through the Intended runtime
OPEN-CONNECTOR-PLAN.md The connector/adapter design that made it provider-agnostic
docs/SPECIFICATION.md Canonical system specification
docs/AGENT_ACTION_CONTRACT.md How agents propose and execute actions
docs/api-guide.md REST API reference
CONTRIBUTING.md How to contribute (domain agents are great first PRs)

Contributing

IntendedOps is open source under the Apache 2.0 license. Domain agents with intent types already defined (identity, sales, contracts, compliance, vendors) are the highest-value first contributions — study domains/billing/ and domains/support/ as complete references. See CONTRIBUTING.md .

All contributions must respect the governance guarantees above: no direct model-to-action execution, fail-closed by default, no bypass paths, every action audited, human approval for high-impact.


License

Apache License 2.0 © Intended, Inc.

Governed by design. Open by default.

About

Governed Back-Office Operating System for SaaS — AI agents run your operations under governed trust tiers. No action executes without governance approval.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /