Build AI teammates that watch and act
Open-source infrastructure for multi-tenant AI agents: sandboxed execution, shared memory, and an SDK that pulls live company data and acts on your high-level goals.
Paste into your coding agent to scaffold a project.
Or start it yourself:
Connect your data
Pick the systems it can read. Lobu turns those updates into live customer memory.
Define the goal
Tell it what to watch for and when to ask before acting.
“Pull new funding, launches, and market signals on portfolio and watchlist companies, and surface what to track next.”
Your agent works autonomously
It scans memory on schedule, spots the account at risk, and keeps the evidence attached.
You review and approve
You can edit the draft, send it, or leave it.
The whole agent, in code.
One project defines it end to end: the agent, its connectors, the memory schema, watchers, and skills. Write it yourself, or let your coding agent generate it. Pick a piece to read the code.
import {
connectorFromFile,
defineAgent,
defineConfig,
defineEntityType,
defineRelationshipType,
defineWatcher,
reactionFromFile,
secret,
} from "@lobu/cli/config";
import type ExaNewsFeedConnector from "./exa-news-feed.connector.ts";
import type founderActivityTrackerReaction from "./founder-activity-tracker.reaction.ts";
const vcTracking = defineAgent({
id: "vc-tracking",
name: "vc-tracking",
description:
"Track companies, founders, and investment opportunities for venture firms",
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 founderActivityTracker = defineWatcher({
agent: vcTracking,
slug: "founder-activity-tracker",
name: "Founder Activity Tracker",
schedule: "0 10 * * *",
notification: { priority: "normal" },
tags: ["vc", "founders", "daily"],
minCooldownSeconds: 600,
reaction: reactionFromFile<typeof founderActivityTrackerReaction>(
"./founder-activity-tracker.reaction.ts"
),
prompt:
"You are a venture capital analyst tracking the public activity of startup founders in your portfolio.\n\n## Founders\n{{#each entities}}\n- {{name}} ({{entity_type}}, ID: {{id}})\n{{/each}}\n\n## Recent Founder Activity\n{{#if sources.founder_posts}}\n{{sources.founder_posts}}\n{{/if}}\n\n---\n\nProduce a structured founder activity report:\n1. **Executive Summary**: 2-3 sentence overview of founder activity and signals.\n2. **Per-Founder Analysis**: For each active founder, summarize their messaging themes, engagement level, and signals about company direction.\n3. **Cross-Portfolio Patterns**: Themes multiple founders discuss.\n4. **Notable Signals**: Flag potential announcements, strategic shifts, or concerns.\n\nBe specific and cite actual tweets/posts as evidence.\n",
sources: {
founder_posts:
"SELECT id, title, payload_text, author_name, source_url, occurred_at, score, origin_type, connector_key FROM events WHERE connector_key IN ('x') AND origin_type IN ('tweet', 'reply') ORDER BY occurred_at DESC LIMIT 300\n",
},
reactionsGuidance:
"When a founder signals hiring activity, fundraising, or pivots, flag for the investment team.\nTrack founders going quiet as a potential concern.\nAlert on any public statements about competitors or market conditions.\n",
extractionSchema: {
type: "object",
required: ["summary", "founders", "notable_signals"],
properties: {
summary: { type: "string" },
founders: {
type: "array",
items: {
type: "object",
required: ["name", "company", "activity_level", "themes"],
properties: {
name: { type: "string" },
company: { type: "string" },
activity_level: {
type: "string",
enum: ["high", "medium", "low", "inactive"],
},
themes: { type: "array", items: { type: "string" } },
sentiment: {
type: "string",
enum: ["bullish", "neutral", "cautious", "concerned"],
},
signals: { type: "array", items: { type: "string" } },
notable_posts: { type: "array", items: { type: "string" } },
},
},
},
cross_patterns: {
type: "array",
items: {
type: "object",
properties: {
theme: { type: "string" },
founders_involved: { type: "array", items: { type: "string" } },
},
},
},
notable_signals: {
type: "array",
items: {
type: "object",
required: ["signal", "founder", "impact"],
properties: {
signal: { type: "string" },
founder: { type: "string" },
impact: { type: "string", enum: ["high", "medium", "low"] },
},
},
},
},
},
});
export default defineConfig({
connectors: [
connectorFromFile<typeof ExaNewsFeedConnector>(
"./exa-news-feed.connector.ts"
),
],
org: "market",
orgName: "Market",
orgDescription:
"Track companies, founders, and investment opportunities for venture firms",
agents: [vcTracking],
entities: [
company,
founder,
fundRound,
investor,
jobPosting,
product,
sector,
],
relationships: [
educatedAt,
foundedBy,
headquarteredIn,
inIndustry,
inSector,
investedIn,
mentions,
operatesIn,
previouslyAt,
primaryRelationshipOwner,
roundLedBy,
roundOf,
sourcedBy,
usesTechnology,
worksAt,
],
watchers: [founderActivityTracker, opportunityMatcher],
});Explore agent workflows.
Each example shows the sources, memory, and actions for one AI teammate.
Local, self-hosted, or managed.
Run on your laptop.
Boot the gateway, workers, memory, and embeddings with one command.
Run in your cloud.
Deploy with Docker or Helm when data and controls need to stay with you.
Let Lobu run it.
Use the same project with managed isolation, secrets, and upgrades.
Build your first
multi-user agent.
Latest blog posts
The Agent Loop Is the New SaaS
Software used to mean buying a vertical tool for every function. Now you build the loop instead. A loop that watches your data and acts is the business logic SaaS sold you, except you own it. Here is how to build one on Lobu.
Shopify's Aquifer, in the Open
Shopify bet that an agent's corpus is the compounding asset. We made the same bet, with two differences: we keep the signal instead of the chat, and we built it for many companies instead of one.
Filesystem vs Database for Agent Memory
Agents need a workspace to think in and a warehouse to remember in. The filesystem is for ephemeral work. The memory layer is for durable organizational knowledge.