Three claims. The receipts are below.
Before the diagrams and the code: here is what Loam actually does, in one line each. Skip to any section for the implementation behind it.
Trace each major claim to a running behavior, an implementation guarantee, a dated artifact, and the boundary where the evidence stops.
Before the diagrams and the code: here is what Loam actually does, in one line each. Skip to any section for the implementation behind it.
Learning-active sessions can add selected, source-tagged decisions, corrections, findings, and open work to the account-scoped record. Later sessions receive a prioritized working set; older entries remain available through recall.
Code Review can write findings and anchors to a ledger. In Loam’s dated internal case, later passes read the existing ledger and did not re-derive the original findings; results vary with the delta and review scope.
Build Mode dispatches a milestone as an isolated subagent, runs it against your real files, and chains to the next on completion — or calls your phone when it hits a blocker.
Redacted samples of the review ledger, remediation pass, memory compression, and security claim map are available in the Loam Proof Packet.
Learning-active sessions can add selected decisions, corrections, and open work to the account-scoped record for later recall.
Lane one — memory consolidation. Older indexed items become era summaries and durable lessons so ordinary sessions stay efficient. The source rows are retained, not replaced.
Lane two — identity synthesis. A separate deep read of the raw lived record produces a compact session reflection and a longer public portrait.
Why they are kept apart. Consolidation is about staying usable. Identity synthesis is about staying honest. Collapsing them into one 'synthesis' would let a summary of a summary become the team's self-description.
Coverage is the other half. Splitting the work into two lanes only helps if the lane that produces identity can prove it read everything it claimed to read.
Pin, then read. The input set is fixed to a cutoff and every raw entry is identified before anything is read.
Partition in code. The roster is divided into bounded groups by code, not by the model.
Require receipts. Each group accounts for the entries it was handed, and the totals must reconcile to the pinned roster or the read runs again.
Cite and verify. Every factual claim cites raw entries. An independent cold reader tries to refute them. One correction cycle is allowed.
Fail closed. An unsupported portrait is rejected and the last verified reflection stays live.
Voice callbacks with dynamic context generation. The team calls your phone with session-aware openers — not scripts.
Autonomous multi-milestone project execution. Subagent-per-milestone dispatch with fresh context windows.
Professional output generation — SOWs, SOPs, frameworks. Template-driven with brand injection.
Trimmed excerpts from the running code, checked against source on 2026‑09‑13. Paths are relative to backend/.
# Learning-active sessions can append selected entries
# with timestamped source tracking
timestamp = datetime.now(timezone.utc)
separator = f"\n\n--- {source} ({timestamp}) ---\n"
if memory:
existing = memory.content.strip()
memory.content = existing + separator + new_content
memory.updated_at = datetime.now(timezone.utc)
else:
memory = PersonaMemory(
user_id=user_id,
persona_key=persona_key,
content=new_content,
)
# Call context adapts to WHY the call is happening
def get_trigger_context(trigger_type, call_topic=None):
if trigger_type == "manual":
if call_topic:
return (
f'The user asked you to call about '
f'a SPECIFIC topic: "{call_topic}". '
'Lead with the topic.'
)
elif trigger_type == "team_blocked":
return "The team is working on a milestone..."
# Pinned rules are lifted out before the model sees the memory
must_enforce_lines_all = [
line.rstrip() for line in memory.content.splitlines() if "MUST-ENFORCE" in line
]
# A repeated rule is kept once (case and trailing .!? ignored)
for line in must_enforce_lines_all:
normalized = line.strip().lower().rstrip(".!?")
if normalized not in seen_me:
seen_me.add(normalized)
must_enforce_lines_deduped.append(line)
# ... the model compresses everything else ...
# Drop any marked line the model wrote; append the originals verbatim
narrative_lines = [
line for line in compressed_text.splitlines() if "MUST-ENFORCE" not in line
]
compressed_text = "\n".join(narrative_lines).rstrip()
if must_enforce_lines_deduped:
compressed_text += "\n\n--- HARD RULES ---\n" + "\n".join(must_enforce_lines_deduped)
# Abandon the write if the memory changed while the model worked
await db.refresh(memory)
if memory.updated_at != snapshot_updated_at:
return False
# Trimmed: the milestone-advance endpoint
async def ide_advance_milestone(body, db):
if body.status == "blocked":
project.build_mode_paused = True
await initiate_reachout_call(persona_key="carl", trigger_type="build_mode_blocked", ...)
return {"action": "paused"}
# "complete": sign off, then push to GitHub if a repo is linked
spawn_background_task(_auto_push_to_github(project_uuid, job.id, user.id))
if _cap_count >= SESSION_CAP_DEFAULT:
project.build_mode_paused = True
return {"action": "session_cap"}
next_milestone = await kick_off_milestone(db, project_uuid, job.id)
return {"action": "continue", "milestone_instructions": instructions}
These are historical internal counts, not customer benchmarks or current totals. Each names the source used at the snapshot date.
Snapshot verified: June 2026 · Sources: git history, pytest suite, production memory store, release ledger.
From the VS Code sidebar to Loam and back — the request path used by supported sessions, reviews, and calls.
For the three big claims: what we assert, where to confirm it, and where the line sits. We'd rather hand you the limit than have you find it yourself.
persona_memory_service.py.
MUST-ENFORCE word for word and appends it after the compressed text — pattern shown above.
services/templates/build.py). The endpoint shown above, from routes/ide/build_mode.py, chains to the next milestone on completion and pauses and calls your phone on a blocker.
Every pattern mentioned on this page has a real implementation. Here's where to look.
When a 4,000-line module splits into six, every consumer keeps working. The facade re-exports the public API. Zero breaking changes across 11 import sites.
call_pipeline/__init__.py → 6 submodulesAI-driven compression that lifts every MUST-ENFORCE line out first and appends it back word for word. The original is kept if the model returns nothing or the memory changed during the run.
persona_memory_service.py → compress_persona_memory()The orchestrator hands milestone work to subagents and chains completion calls — when one milestone finishes, the next begins until a blocker or the session cap pauses the run.
routes/ide/build_mode.py → ide_advance_milestone()After any component extraction, every JSX identifier is grep-verified against the import list. Three extraction bugs taught this rule. It's now enforced on every split.
Enforced across all frontend decompositionsInspect the architecture, dated evidence, and stated limits—then decide whether the delivery system fits your work.
Meet the Team →