falkordb-cognee-islo
A 10-agent GTM AI team that doesn’t lose state, credentials, or taste.
Ten specialized agents on OpenClaw, sharing one
knowledge graph powered by Cognee on
FalkorDB, all running inside a long-lived
Islo sandbox so the team survives restarts, sleeps,
and laptop closes.
The repo ships with a single-page Mission Control dashboard so you can
watch the funnel move in real time as the agents work.

The fleet
| # |
Agent |
Role |
| 1 |
🪖 chief |
Orchestrator. Owns campaigns end-to-end. Holds the north-star metric. |
| 2 |
📡 scout |
Hunts buying signals: funding, hiring, exec change, tech adoption, pain. |
| 3 |
🔬 researcher |
Writes a one-page sharp Brief per account, with sources. |
| 4 |
🎯 icp |
Qualification gate (rubric, score ≥ 18/25 to pass). |
| 5 |
🧪 enricher |
Finds + verifies decision-maker emails. Never invents contacts. |
| 6 |
✍️ writer |
Outbound copy anchored on a specific signal & pain hypothesis. |
| 7 |
🧂 critic |
Taste + deliverability veto. Kills generic copy. Cannot be overridden. |
| 8 |
🗓️ sequencer |
The only agent that sends. Pacing, send windows, suppression baked in. |
| 9 |
💬 reply |
Triages inbound. Drafts responses. Never auto-sends. |
| 10 |
📊 analyst |
Daily/weekly KPI report. Flags CRM hygiene issues. |
All ten share one Cognee + FalkorDB graph (namespace gtm):
Account ──works_at── Contact ──drafted_for── MessageDraft ──reviewed_by── CriticReview
│ │ │
│ │ └── anchored_on ── Signal ── triggered_by ── Account
│ │
│ └── sent_to ── Message ── replied_to ── Reply ── produced ── Outcome
│
└── owned_by ── Campaign
Mission Control (the UI you’ll actually use)
A small FastAPI app in control/ serves a single-pane operator view over plain
HTTP — works through any reverse proxy, including islo share, with no
WebSocket upgrade required:
| Route |
What it does |
GET / |
Fleet overview, live funnel KPIs, ready-to-send queue, recent activity feed |
GET /graph |
vis-network view of the live FalkorDB graph + read-only Cypher console |
GET /agent/<id> |
That agent’s soul.md, agent.md, and the shared user.md |
GET /workflows |
The 6 cron heartbeats and their runbooks |
GET /api/state |
JSON snapshot — agents, cron, node/edge counts, funnel |
GET /api/graph |
JSON {nodes, edges} for any vis library |
POST /api/cypher |
Read-only Cypher (CREATE/MERGE/SET/DELETE refused) |
POST /api/run/demo |
Drives one full GTM cycle (Scout→Researcher→ICP→Enricher→Writer→Critic) |
POST /api/run/send |
Sequencer fires top approved draft + Reply Handler may book a meeting |
POST /api/run/llm |
Pass-through to openclaw agent --agent X --message ... |
Three buttons across the top of / actually drive the system end-to-end. The
KPIs refresh every 5 seconds so you watch the funnel grow as you click.
Run it:
make control # boots Mission Control on :8080
# open http://localhost:8080/
Quick start (laptop)
cp .env.example .env # fill in LLM_API_KEY at minimum
make stack-up # boot FalkorDB locally (docker)
make install # python deps for memory + control
make memory-ping # verifies cognee → falkordb wiring
make agents-register # registers the 10 agents into local OpenClaw
make control # Mission Control on http://localhost:8080
openclaw gateway # (separate terminal) start the gateway
End-to-end local smoke in one command:
make smoke
Quick start (Islo sandbox — long-running deploy)
Two commands from a clean slate, each idempotent:
# 1. Create the sandbox and clone the repo (~30s)
islo use gtm-sandbox --source github://Incredibuild-RND/falkordb-cognee-islo
# 2. Install python+node+openclaw+falkordb and register the 10 agents (~3 min)
islo use gtm-sandbox -- \
bash -lc 'cd /workspace/falkordb-cognee-islo && ./bootstrap.sh'
bootstrap.sh is detach-aware (the slow npm install -g openclaw runs in the
background and we poll for it) so it survives Islo’s exec window.
Boot Mission Control + share a public URL:
# inside the sandbox
islo use gtm-sandbox -- bash -lc '
cd /workspace/falkordb-cognee-islo && . .venv/bin/activate
setsid bash -c "uvicorn control.server:app --host 0.0.0.0 --port 8080" \
</dev/null >/dev/null 2>&1 & disown'
# from your laptop
islo share gtm-sandbox 8080
# → https://<id>.share.islo.dev open in any browser
The sandbox stays warm. Reconnect any time — everything is still running:
islo use gtm-sandbox
Cron / heartbeats (defined in agents.yaml)
| Cadence |
Agent |
Workflow |
| every 10 min |
reply |
workflows/reply-triage.md |
| every 30 min |
scout |
workflows/signals-sweep.md |
| hourly :15 |
enricher |
workflows/enrichment-batch.md |
| business hours M–F |
sequencer |
workflows/send-window.md |
| 08:00 daily |
chief |
workflows/morning-brief.md |
| 18:30 weekdays |
analyst |
workflows/end-of-day.md |
Repo layout
agents.yaml # the 10-agent manifest (source of truth)
setup.sh # idempotent registration into OpenClaw
bootstrap.sh # one-shot installer for Islo sandboxes
islo.yaml # sandbox config used by `islo use`
docker-compose.yml # FalkorDB only (host or sandbox)
Makefile # local + sandbox lifecycle targets
.env.example # all required + optional env vars
BOOTSTRAP.md # what each agent reads on first turn
.agents/
_shared/user.md # company / ICP / brand voice (read by every agent)
<agent-id>/
soul.md # identity, principles, hard rules
agent.md # model, tools, inter-agent protocol
workflows/ # six cron-driven GTM workflows
control/ # Mission Control HTTP UI (FastAPI + vis-network)
server.py
memory/
cognee_init.py # boots cognee with FalkorDB hybrid adapter
schema.py # GTM graph nodes + edges (the contract)
cli.py # `python -m memory ping|seed|search|stats`
tests/
test_smoke.py # manifest + cognee + FalkorDB sanity
Credentials in the sandbox
Islo auto-injects phantom credentials into the sandbox env (verify with
env | grep -iE 'OPENAI|SLACK|LINEAR|GITHUB|GITLAB|NPM|CURSOR').
Their values look like islo_phantom... — the real key never enters the
sandbox. Islo’s egress gateway substitutes the real key on outbound requests.
For the substitution to actually fire for a given host (e.g. api.openai.com),
that host needs a gateway-profile rule. The default profile has zero rules,
so calling api.openai.com directly with OPENAI_API_KEY=islo_phantom...
returns 401 Credential injection failed.
Pick one to enable real LLM calls:
A. Gateway profile (keeps secrets out of the sandbox):
islo gateway default add-rule \
--host "api.openai.com" --action allow \
--inject-credential openai
# then on launch:
islo use gtm-sandbox --gateway-profile default ...
B. Bring your own real key:
islo use gtm-sandbox --env OPENAI_API_KEY=sk-... # for openclaw agents
islo use gtm-sandbox --env LLM_API_KEY=sk-ant-... # for cognee/cognify
Once a real key is in place, invoke an agent end-to-end:
islo use gtm-sandbox -- bash -lc '
export PATH="$HOME/.npm-global/bin:$PATH"
openclaw agent --agent chief --message "What is your north-star metric?"
'
…or just click the 🧠 Real LLM · ask Chief button on Mission Control.
Safety defaults
SEND_ENABLED=false and SEQUENCER_DRY_RUN=true ship in .env.example —
Sequencer will not send anything until you flip both.
- Reply handler never auto-sends. Drafts only, human approves in Slack.
- Enricher refuses contacts with
email_status != verified.
- Critic has veto power that chief cannot override.
- All agents share suppression and 90-day touch checks via the graph.
- Mission Control’s Cypher console is read-only (
CREATE/MERGE/SET/
DELETE/REMOVE/DROP are refused at the API).
Customizing for your own GTM motion
The repo ships pre-wired with Incredibuild’s positioning as a worked example,
but everything that matters is in three files:
.agents/_shared/user.md — your company, offer, ICP, personas, voice,
hard rules. Every agent reads this on every turn.
agents.yaml — agent roster, default model, cron schedules.
.agents/<agent-id>/soul.md — per-agent identity and rules. Short.
Replace the contents of those three, leave the schema, workflows, Mission
Control, and Islo deployment alone, and you have your own 10-agent fleet.
Status
License
Apache-2.0. See LICENSE.
Built by Incredibuild-RND on top of
the open-source work of FalkorDB, Cognee, OpenClaw, and Islo.
评论