BankWeave
LiveRunning on FalkorDB Cloud · 6 banks · … · hosted MCP

AI agents investigate alerts across banks in one FalkorDB instance. Each bank keeps its own graph, rings appear where the graphs join, and every sentence of a report points to the query that proves it.

alerts decided by agents
0

alerts decided by agents

independent claims
…

independent claims

live overview query
…

live overview query

bankweave.vercel.app/command
BankWeave dashboard on the live site

Built on

FalkorDBGraphBLAS algorithmsLangGraph agentsGroqOpenRouterHNSW vector indexFull-text indexWebAuthn / FIDO2Ed25519 Merkle sealsX25519 PSIOpenTelemetryIBM AML dataNext.jsFalkorDBGraphBLAS algorithmsLangGraph agentsGroqOpenRouterHNSW vector indexFull-text indexWebAuthn / FIDO2Ed25519 Merkle sealsX25519 PSIOpenTelemetryIBM AML dataNext.js

The demo

Watch it find the ring

The problem, the idea on a whiteboard, then the live product on FalkorDB Cloud: agents, the ring reveal, a case, the hardware edge, MCP and FalkorDB's own browser.

Narrated, captions burned in. Every screen is the live site; every number comes from the product or eval/results.

Why a consortium graph

A laundering ring spreads its accounts across banks, so each bank sees a few harmless customers. BankWeave joins their graphs without sharing raw data, and agents prove every link before a human signs.

What's new in v3

Look inside the graph yourself

A Cypher explorer over every graph, a 3D walkthrough where each scene is one FalkorDB call, a live dashboard and an MCP server you can add to Claude.

Graph explorer

Any read-only Cypher, on any graph

Twelve presets run live against FalkorDB Cloud: a cross-bank ring laid out by bank, algo.pageRank over the consortium, shared devices. Edit the query and run your own.

Open /explorer
bankweave.vercel.app/explorer
Graph explorer on the live site showing a cross-bank ring coloured by bank

3D explainer

How it works, in eight scenes

Six bank graphs, the consortium joining them and the ring that only appears there. Each scene is one FalkorDB call you can read.

Open /explainer
bankweave.vercel.app/explainer
3D explainer scene: the laundering ring lit up across bank layers

Dashboard

The whole consortium on one screen

Alert queue, open cases, approvals waiting for a signature, FalkorDB health and what each agent is doing, refreshed from the live API.

Open /command
bankweave.vercel.app/command
BankWeave dashboard with live counters, FalkorDB health and agent activity

Hosted MCP

Ask Claude about the graph

One line adds BankWeave to Claude. No install, no key: the server is the live API, read-only, with 3 prompts and 2 resources besides the tools.

Read docs/MCP.md
terminal
$ claude mcp add --transport http bankweave https://bankweave-api.onrender.com/mcp

# 17 read-only tools; each one returns the Cypher it ran

  • engine_overviewINFO memory, GRAPH.LIST
  • get_caseone graph per case
  • explain_claimDERIVED_FROM*0..5
  • trace_money_pathalgo.SPpaths
  • find_ringsalgo.labelPropagation
  • top_hubsalgo.pageRank
  • similar_accountsHNSW vector index
  • run_readonly_cypherGRAPH.RO_QUERY

# and 9 more: list_graphs, graph_schema, list_cases, account_network, …

Measured on IBM's laundering data

The numbers, not the pitch

Screenshots of the live Evaluation page; every figure comes from eval/results in the repo.

E2 · Consortium vs single bank

43.8%

The best-placed single bank holds 43.8% of a ring's accounts on average and holds none of the 36 cross-bank rings whole. The consortium graph holds all of them.

bankweave.vercel.app/evaluation
Evaluation page, E2 card: best-placed single bank 43.8%, rings held entirely by one bank 0.0%, consortium graph 100.0%

Scroll sideways, or tap for the full-size capture.

E1 · Alert triage, held out

0.205

On 4,000 later-period alerted accounts, the calibrated graph score reaches F1 0.205 while escalating 174. Escalating every alert scores 0.063.

bankweave.vercel.app/evaluation
Evaluation page, E1 table: escalate every alert F1 0.063 with 4,000 escalations; calibrated graph score F1 0.205 with 174

Scroll sideways, or tap for the full-size capture.

E6 · Trust layer, 28 agent cases

27.8%

27.8% of evidence items repeated an origin already counted. 25 of 28 reports passed the provenance gate at mean fidelity 0.988, and cascading invalidation found every affected item.

bankweave.vercel.app/evaluation
Evaluation page, E6 card: 27.8% echo, 25/28 SARs through the provenance gate with mean fidelity 0.988, cascade recall and precision 100.0%

Scroll sideways, or tap for the full-size capture.

E7 · Tool latency, 1.3M transfers

0.4 ms

Median tool latency on one machine over 1.3M transfers: 0.4 ms for vector neighbours, 57.5 ms for PageRank across the whole consortium.

bankweave.vercel.app/evaluation
Evaluation page, E7 table: behavior_neighbors 0.4 ms median, pagerank_consortium 57.5 ms

Scroll sideways, or tap for the full-size capture.

27.8%

of evidence items repeated an origin already counted

E6 · echo

25 / 28

SARs passed the provenance gate

E6 · gate

0.988

mean provenance fidelity

E6 · gate

100%

recall on cascading invalidation, 50 scripted graphs

E6 · cascade

Open the Evaluation page

Misses are reported there too, such as E3, a paper reproduction that did not hold on this data.

Inside a case

Open any case and check it yourself

Screens from the live site, running on FalkorDB Cloud with the agents on Groq.

bankweave.vercel.app/cases
Evidence on the live site

Evidence, counted once

Ten paths to one shared device are one fact. Confidence is computed over independent origins, not paths.

See it live →

Not a mock-up

Recorded on the real tools

Screen recordings on third-party sites. The terminal and the ESP32 are simulations; the HTTPS call, the graph write and the TLV are real.

wokwi.com
Our ESP32 sketch, running in Wokwi

Our ESP32 sketch, running in Wokwi

The sketch posts a card tap over HTTPS to the live API, which answers 00 APPROVED, writes the CARD_TXN edge into FalkorDB Cloud and returns ISO 8583 field 55 to the serial monitor.

emvlab.org/tlvutils
EMVLab decodes that exact TLV

EMVLab decodes that exact TLV

The field 55 printed by the board, pasted into EMVLab.org's decoder: amount, currency, IFD serial, transaction counter and cryptogram all parse.

browser.falkordb.com
FalkorDB's own browser on our Cloud instance

FalkorDB's own browser on our Cloud instance

The cross-bank ring, algo.pageRank, the card-tap edges, a SAR's provenance chain and vector KNN, typed in as read-only queries. The hostname bar is cropped.

app.falkordb.cloud
The FalkorDB Cloud console

The FalkorDB Cloud console

The instance the live site runs on: Free tier, ap-south-1, FalkorDB v4.22.0, status healthy.

Try the terminals and the security key on the Hardware Lab.

FalkorDB Browser

Open it in FalkorDB's own browser

The graphs the agents use, queried in browser.falkordb.com against our Cloud instance (v4.22, 36 graphs). Timings are the engine's own readout.

FalkorDB Browser: The cross-bank ring

The cross-bank ring

12 nodes, 166 edges

1.85 ms
FalkorDB Browser: algo.pageRank, top 12

algo.pageRank, top 12

native GraphBLAS

3.55 ms
FalkorDB Browser: Card taps into terminals

Card taps into terminals

29 CARD_TXN edges

0.41 ms
FalkorDB Browser: The Mumbai POS node

The Mumbai POS node

with its GPS, 19.076, 72.8777

FalkorDB Browser: SAR → sentence → claim → evidence

SAR → sentence → claim → evidence

the provenance gate as a pattern

0.61 ms
FalkorDB Browser: Vector KNN

Vector KNN

behaviour twins at five banks

0.36 ms
FalkorDB Browser: Shared devices and IPs

Shared devices and IPs

291 nodes, 220 edges

2.79 ms

How it works

Seven agents, one blackboard in the graph

LLMs plan and write. Cypher and FalkorDB's algorithms compute. A human approves every action.

  1. 1Orchestratoralerts → tasks
  2. 2Triageclear or open
  3. 3Investigatorclaims + evidence
  4. 4Skepticinnocent case
  5. 5ReporterSAR draft
  6. 6Auditorother model
  7. 7Humansigns approval
  8. 8Archivistsaves procedure

Frequently
asked
questions

What is BankWeave?

A multi-agent anti-money-laundering system. It loads IBM's public synthetic AML data into one FalkorDB graph per bank plus a consortium graph, lets agents work the alert queue, and publishes reports where every sentence cites its evidence and query.

Do banks share raw customer data?

No. Each bank's transfers stay in its own graph, and the consortium links accounts by salted, enclave-blinded ids. Per-bank ACLs let a bank read only its own graph.

What do the LLMs actually decide?

They plan, choose tools and write prose. Paths, flows, centrality and communities are computed by Cypher and FalkorDB's algorithms. Without an API key the agents follow a deterministic policy, and the UI says so.

How do you stop a report from inventing agreement?

Confidence counts independent origins, overturned evidence cascades to every claim resting on it, and a provenance gate blocks any sentence without a citation. A different, larger model audits the result.

Is any of this mocked?

The data is IBM's synthetic AML set and the live site runs on FalkorDB Cloud. The card terminals, enclave and security key are labelled simulations; their hashes, signatures and graph writes are real.

Why does a page say "Seeded replay"?

The API runs on Render's free plan, which sleeps when idle. While it wakes, pages render from snapshots of real API responses.

Watch it work live

Agents opening cases on FalkorDB Cloud right now, with every claim one click from the query that proves it.