Bring your agents
Connect ChatGPT, Claude, Codex, OpenClaw, or any MCP client to the same company context, scoped to each user.
Connect an agent →Review new contracts for risk, flag clauses that need counsel approval, and file a review ticket.
See how contract history, clause risk, ownership, and counsel approval connect in one loop.
Connectors stream your databases, SaaS tools, files, devices, and internal APIs into context. Your systems of record stay where they are. Models, sandboxes, and devices are independent layers, credentials gateway-side. Flip the tabs to wire each one.
Connectors ↗Raw events resolve into people, customers, projects, policies, and goals, with the relationships between them. Every fact from the connectors above converges on the right record, carries its provenance, and is read under the caller's permissions.
Memory ↗A trigger — a schedule, or reactive to connector events — plus a plain-language prompt. Once defined it runs unprompted: scans memory, matches the trigger, and surfaces the work with the evidence attached.
Automations ↗“For each new , watch and for risk in its . When a needs counsel, flag it and ping the who owns the before countersign.”
ChatGPT, Claude, and Codex connect over MCP; Slack, Teams, and WhatsApp over chat; your own apps over the API. Same context, same permissions, whoever's asking. Consequential work arrives as a proposal you review, edit, and approve.
Platforms ↗§7 flagged · counsel review
Drafted a review ticket for Priya with the clause link. Review before I file it:
Use the agents your team already trusts. Managed agents are optional.
Connect ChatGPT, Claude, Codex, OpenClaw, or any MCP client to the same company context, scoped to each user.
Connect an agent →Run repeatable work from live events or schedules under the same approval policy.
Build a managed agent →Share context, permissions, approvals, and connected actions with any agent. Add Lobu's runtime only when you need it.







The use case above is one project: connections, entity types, automations, and agent configuration. Inspect each piece or let your coding agent generate it.
import {
connectorFromFile,
defineAgent,
defineConfig,
defineSkill,
defineEntityType,
defineRelationshipType,
defineAutomation,
every,
secret,
field,
} from "@lobu/cli/config";
import type DocuSignEnvelopesConnector from "./docusign-envelopes.connector.ts";
const contractReviewTrackerSkill = defineSkill({
name: "contract-review-tracker",
content:
"Review active contracts for approaching deadlines, unsigned agreements, and unresolved risk items. Flag any clauses that still need counsel approval.\n",
});
const legalReview = defineAgent({
id: "legal-review",
skills: [contractReviewTrackerSkill],
name: "legal-review",
description:
"Review contracts, summarize risk, and surface missing protections",
dir: ".",
providers: [
{
id: "anthropic",
model: "claude/sonnet-4-5",
key: secret("ANTHROPIC_API_KEY"),
},
],
network: {
allowed: [
"github.com",
".github.com",
".githubusercontent.com",
"registry.npmjs.org",
".npmjs.org",
],
},
});
// entity types and relationships defined here…
const contractReviewTracker = defineAutomation({
agent: legalReview,
slug: "contract-review-tracker",
name: "Contract review tracker",
triggers: [every("0 8 * * 1-5")],
tags: ["legal", "contract", "daily"],
minCooldownSeconds: 1800,
reactionsGuidance:
"For any contract with `status: needs_counsel`, route an entity-scoped event\nto the assigned reviewer. For contracts >90 days unsigned, escalate to the\ncounterparty owner; never auto-resolve risk items.\n",
skills: ["contract-review-tracker"],
});
export default defineConfig({
connectors: [
connectorFromFile<typeof DocuSignEnvelopesConnector>(
"./docusign-envelopes.connector.ts"
),
],
org: "legal-review",
orgName: "Legal",
orgDescription:
"Review contracts, summarize risk, and surface missing protections",
agents: [legalReview],
entities: [clause, contract, counterparty, risk],
relationships: [belongsToCounterparty, containsClause, createsRisk],
automations: [contractReviewTracker],
});Connect any agent to shared context and keep consequential actions under approval.