Legal · Self-hostable

Company context for contract review.

Review new contracts for risk, flag clauses that need counsel approval, and file a review ticket.

Try Lobu
Connects to
DiscordGitHubGmailGoogle CalendarGoogle ChatHacker NewsLinearMicrosoft TeamsPostgreSQLProduct HuntRedditRSS / AtomSlackTelegramWhatsApp CloudX (Twitter)YouTube+5 more
03/LOBU RUN ]

One company layer, in 4 steps.

See how contract history, clause risk, ownership, and counsel approval connect in one loop.

01

Connect your company.

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 ↗
Contracts and signature events feed the legal review loop.
feed · event → shared memoryentity
envelopes
updateNDA v2 uploaded for reviewnow
02

Turn activity into governed context.

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 ↗
memory
Counsel
idPK
full_name
slack_handle
Counterparty
idPK
counsel_idFK
risk
Contract
idPK
counterparty_idFK
status
Clause
idPK
contract_idFK
risk_level
03

Deploy Automations that watch and act.

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 ↗
automation
triggers⏱ ScheduleOn new contract⚡ On eventNDA v2 uploaded for review
prompt

For each new , watch and for risk in its . When a needs counsel, flag it and ping the who owns the before countersign.

@ connector@ entityReferences resolve to the sources and types you defined above.
04

Use it from any agent.

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 ↗
#legal-reviewsRedwood NDA v2
lobujust now

§7 flagged · counsel review

  • Uncapped indemnity in §7
  • Same pattern that blocked Acme NDA
  • Countersign requested by counterparty

Drafted a review ticket for Priya with the clause link. Review before I file it:

Draft · Linear ticket
REV-88 · Redwood NDA v2 — §7 has uncapped indemnity (same pattern as Acme NDA, Sep). Needs counsel sign-off before countersign. Linked clause + prior redline attached.
03/TWO WAYS IN ]

Bring any agent. Add shared context.

Use the agents your team already trusts. Managed agents are optional.

Start here

Bring your agents

Connect ChatGPT, Claude, Codex, OpenClaw, or any MCP client to the same company context, scoped to each user.

Connect an agent →
Optional runtime

Build a managed agent

Run repeatable work from live events or schedules under the same approval policy.

Build a managed agent →
04/UNDER THE HOOD ]

One control plane. Any agent.

Share context, permissions, approvals, and connected actions with any agent. Add Lobu's runtime only when you need it.

Halftone figure: multi-socket plug bank
Halftone figure: stacked storage drives
Halftone figure: vacuum tube in a ceramic socket
Halftone figure: sealed glovebox isolation chamber
Halftone figure: balance scale with calibration weights
Halftone figure: freight container on a crane hook
Halftone figure: oscilloscope with waveform
01·CONNECTORS

Plug into everything.

22+ connectors (Slack, GitHub, Gmail, Linear, Postgres and more) stream events in, and actions flow back out under scoped identities. Anything with an API fits the connector SDK.

For engineers

The same agent, in code.

The use case above is one project: connections, entity types, automations, and agent configuration. Inspect each piece or let your coding agent generate it.

lobu.config.tslobu.config.ts
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 your first agent to company context.

Connect any agent to shared context and keep consequential actions under approval.

Status:// connecting agent…