On this page ▾

IKA Concierge Architecture

Single source of truth for IKA's inner shell — the AGI-UX for an AI-first company AND an AI-managed life. v25.1 (2026-04-27).

Swarm timeline (v0)

Two-phase plan, both accounts sequential on the same focus

Who builds: Opus 4.7 ($200/mo plan, sub-agent fan-out) + Codex 5.5 (Max plan), running 24/7 — sequentially on the same focus, not in parallel on different tracks.

Phase 1 (~3–4 swarm-days): both accounts focused on building the React Operations shell INSIDE the existing vanilla shell on main.ika.ai (hybrid mount, file-by-file). No parallel BI rewrite.

Phase 2 (~2–3 swarm-days, after Phase 1 ships): both accounts focused on rewriting the vanilla BI to React inside the same app. End state: one React app, no legacy.

v0 honest swarm estimate: 5–8 calendar days

WorkstreamSwarm time
Schema-per-IKA + RLS migration~6h
JWT-off-URL + WS-ticket exchange~3h
Computer Use credential broker~1d
Prompt-injection policy + canary CI~6h
Skill signing + Firecracker isolation~1d
Encryption-at-rest + age backups + KMS~6h
Builder host-shell role-gate + Playwright~2h
Phase 1 — React Operations inside vanilla shell~3–4d
Phase 2 — vanilla BI → React rewrite~2–3d
Six gbrain knowledge-graph lifts~1–2d
Six-layer token stack adoption~1d
Voice matrix v0 (rolled out in waves)~1d
Onboarding templates × 6 + starter prompts~6h
Integration + smoke test (Playwright + Mats walkthrough)~1d

Non-blocking external work

External clocks (lawyer, vendor activations, pen-test schedulers) do not gate the swarm. We ship working code with sensible defaults + draft text now, then swap when the external work returns.

External itemWhat ships nowAsync swap
LATAM/EU data residency provisioningRouting logic + LiteLLM router pinning shipped Sprint 4 (Bedrock EU / Vertex europe-west config ready)Vendor EU API key activation lands when vendors complete it; no code change required
Lawyer review of Computer Use ToS marketingDraft marketing copy shipped Sprint 0 — non-blockingLawyer revision swap when reviewed; same surface, copy-only delta
Pen-testScheduled ASAP after Sprint 6 (Phase 1 ships); does NOT gate Phase 2Fix-list lands as Sprint 9 (or later) post-pen-test
DR runbook quarterly test-restoreRunbook documented Sprint 0; first test runs in normal cadence (clock-bound only by quarter)Subsequent quarterly restores tracked separately

v1 feature-complete: 2–4 weeks

Wall-clock = full voice matrix waves with Mats UX cycles + integration polish + Mats-review batches between sprints. The historical "cannot compress" items (pen-test, lawyer review, EU/LATAM residency activation) are now treated as non-blocking — see table above — so they no longer dominate the v1 envelope.

IKA versions + subdomain inventory

Frontends — IKA app lineage

VersionStackURLStatus
v1 (BI seed)Vanilla HTML+JS+Three.jsdev-graph.ika.aiOriginal BI dev that became msp's prompt bar / agent BI. Historical reference.
v2Flutter (Dart)dev-v2.ika.ai · v2.ika.aiFrozen historical snapshot; reference only.
v3 (msp)Vanilla HTML+JS+Three.jsmsp.ika.aiFinal client-presentation build, frozen.
v3 (main)Vanilla HTML+JS+Three.jsmain.ika.aiActive build target. Phase 1 hybrid mount; Phase 2 full React after Phase 1 ships.
v3 first dynamic tenantPer-tenant deploy<first-dynamic-tenant>.ika.aiSlot is TBD.

Sister apps — non-BI IKA properties

SubdomainWhat it isLive status
intur.ika.aiINTUR app (separate product)Live
queplan.ika.aiQuéPlan app (separate product)Live
bench.ika.aiBench / benchmarking surface502 — needs systemd unit on 8080.
rover.ika.aiRover landingNo DNS; likely retired.
dev-pz.ika.aiPZ dev surface530 — Cloudflare origin error.

Backend / supporting subdomains

SubdomainPurposeLive status
dev-api-v2.ika.aiBackend API (Go @ :3044 via Cloudflare tunnel)404 at root; functional under /api/...
dev-ws-v2.ika.aiWebSocket / Socket.IO endpoint (gosf @ :9999)Tunnel TCP-mode breaks real WS clients. Switch to HTTP + enable WebSockets in CF dashboard.

"IKA" means v3 unless explicitly stated. All forward development branches off main.

Active artifacts — the on-the-fly pages we've built

Every HTML page below is an artifact per the v25 spec — created via agent tool call, lives at a stable URL, owned by one neuron. Once the React Operations shell ships, each row becomes a tracked artifact entity in its owning neuron's grid (Row 5 of the 13-cell layout). For now they're directly on disk under build/web/bi/main/<name>/ and build/web/intur/....

URLTitleOwning neuron (target)
main.ika.ai/ika-pro-architecture/IKA Concierge Architecture (this page) — single source of truth for the v3 build. URL slug pending rename.main / Engineering / Architecture
main.ika.ai/graphify/Knowledge-Graph Tools — Comparison + Recommendation for IKAmain / Engineering / Research
main.ika.ai/ika-pro-architecture/#gstackgstack vs IKA — Findingsmain / Architecture
main.ika.ai/ika-pro-architecture/#hermesHermes Agent (Nous Research) vs IKA — Findingsmain / Architecture
main.ika.ai/ika-pro-architecture/#karpathyAndrej Karpathy — what to adopt for IKAmain / Architecture
main.ika.ai/ecc/ECC (Everything Claude Code) — analysis for IKA Conciergemain / Architecture
main.ika.ai/odysseus/Odysseus (self-hosted AI workspace) — what to adopt for IKAmain / Architecture
main.ika.ai/skills/Anthropic Knowledge-Work Plugins — what to adopt for IKA Conciergemain / Architecture
main.ika.ai/superpowers/obra/superpowers — engineering-discipline meta-skills, what to adopt for IKA Conciergemain / Architecture
main.ika.ai/ika-pro-architecture/#tokensToken Optimizer Analysis — RTK + Alternativesmain / Architecture
main.ika.ai/ika-pro-architecture/#labIKA Lab — experimental BI shellmain / Architecture
main.ika.ai/design/IKA — Design Systemmain / Design
intur.ika.ai/IKA — INTUR (sister-product landing)intur / root
intur.ika.ai/v2/IKA — INTUR · v2 (Respuestas a Consultas)intur / Proposals
intur.ika.ai/design/IKA — Design System (INTUR mirror)intur / Design
msp.ika.ai/agents/IKA — MSP AI Agents (proposal)msp / Sales / Proposals
main.ika.ai/pnud/IKA Converter — PNUD Honduras (client tool)main / Clients / PNUD
msp.ika.ai/prompts/IKA · MSP Sitemap — Prompts & Destinationsmsp / BI / Sitemap
main.ika.ai/steering/IKA Steering — Two Brains, One Systemmain / Architecture
main.ika.ai/infra/IKA Infrastructuremain / Engineering / Infra

Subdomain root rule: msp.ika.ai is served from /home/dev/ika/build/web/bi/ (the bi/ root). main.ika.ai is served from /home/dev/ika/build/web/bi/main/. Same code, different roots. So /agents/, /prompts/, /design/ live under msp's root only and must be linked at msp.ika.ai/<path>/; /pnud/, /steering/, /infra/ were moved to build/web/bi/main/ in v25.8 and now serve only on main.ika.ai. The main subdomain falls back to its SPA index for any path it doesn't have on disk. Rows above are linked at the URL that actually serves the file.

When a new artifact is created during the build (e.g. Mats asks IKA for a "report on X" → IKA produces an HTML artifact under the relevant neuron — see Auto-routing in the Artifacts section), its URL appears here automatically once the Artifacts grid is wired in Phase 1B / Sprint 2.

Frontend stack — React + Vite + TypeScript

One product, two shells: BI (outer) and Operations (inner). Same URL, one hard toggle in chrome flips between them. BI can be turned off per-tenant. Both shells share one stack.

Plugin picks

SurfacePickLicense
Notes (block editor)BlockNote primary; TipTap fallbackMPL-2.0 / MIT
Calendar / Events@fullcalendar/reactMIT
Project Gantt + dependenciesgantt-task-reactMIT
Documents (drag-drop + Drive picker)@uppy/react + CompanionMIT
3D / icosahedronreact-three-fiber + Three.jsMIT
Drag layer@dnd-kit/core or react-dndMIT
Pinch / wheel zoom@use-gesture/reactMIT
StateZustand (or Jotai)MIT
e2e testsPlaywrightApache-2.0

Stack diagram — single two-phase swimlane

main.ika.ai — single URL, two phases progressively PHASE 1 — React Operations mounted INSIDE existing vanilla shell (~3–4 swarm-days) Both Opus + Codex focused HERE, on the same code. Existing vanilla shell (host) Three.js icosahedron · BI dashboard panels (untouched) ↕ BI ↔ Operations toggle React + Vite + TS island (NEW) Operations: 13-cell grid · neuron tree · drag-drop Forms · Phases · Leadership · Sharing · Search BlockNote · @fullcalendar/react · gantt-task-react · @uppy/react PHASE 2 — vanilla BI → React rewrite (~2–3 swarm-days, after Phase 1 ships) React + Vite + TS — full app (no legacy vanilla) BI shell ported: charts · drill-downs · query overlay · palette · modal analysis · lights Three.js icosahedron → react-three-fiber port Operations carried over from Phase 1; chrome fully React Visual regression vs frozen msp.ika.ai — port → diff → fix

Spec — IKA as fractal JARVIS

Multi-IKA per user

Target market is prosumer. A single user spins up multiple IKAs:

Tenant identity = {user_id, ika_id, scope: business|personal}. Isolation enforced by schema per IKA in one Postgres cluster + Row-Level Security policies. One PgBouncer transaction-pool serves all IKAs; RLS is the floor under every query so a missed WHERE clause still denies the row. Cross-IKA Builder feed and global search are joins inside one cluster.

Fractal UI — neurons all the way down

Every neuron contains sub-neurons, recursively. Soft cap at depth 6; agents see depth 0–3 ancestors + current + immediate children unless explicitly asked.

IKA-Personal  root
Social  department neuron
Sports  sub-neuron
Basketball  sub²
Tuesday-night-pickup  sub³

Every level is a "neuron" — same shell, same entity slots, same agents, same governance. Data model: neuron.parent_id → neuron.id. UI is one component that recurses. Loading is lazy per level.

13 first-class entities (per neuron)

Tagline: "Their own JARVIS, IKA." One harness, N IKAs per user, fractal UI all the way down.

Drag & Drop interaction model

Core principle: every entity is draggable. Drop one onto another and the receiver becomes the container. Same gesture everywhere. Drag-and-drop is ADDITIVE — every entity also has "+ create child" UI.

Inside a neuron

Open any neuron and the body shows lists side by side (Sub-neurons · People · Agents · Projects · Tasks · Events · Documents · Notes · Forms · Integrations · Skills · Automations · Artifacts). Each list has its own search bar, "+" button, and drag-drop targets.

Drop matrix

Drag this →onto Projectonto Taskonto Eventonto Neurononto Person
ProjectNo nested projects——Move project to neuron—
TaskAssign to projectMake sub-task—Move to neuronAssign to person
EventAttach to projectAttach to task—Move to neuronInvite to event
NoteAttachAttachAttachAttachAttach
DocumentAttachAttachAttachAttachAttach
PersonAdd to teamAssign / add to participantsInviteAdd to neuron—
Person → Note · Person → Document · Person → Form · Person → Artifact: Add as participant / collaborator. Drag a person onto any element and they're attached. Same gesture everywhere.
AgentBind to projectAssign taskBind to handlerBind to neuron—
Neuron———Becomes sub-neuron—
ArtifactCross-referenceCross-referenceCross-reference——

Sole exception: projects cannot be dropped into other projects.

Cross-listing rule

When a task is assigned to a project, it appears in BOTH the project's list AND the neuron's outer task list. Same applies to events attached to projects/tasks, notes/documents attached to anything. Container relationship is data; listing is UI — one truth, multiple views.

Implementation

Frontend: @dnd-kit/core or react-dnd. Backend: each entity has polymorphic container_type + container_id. Drop = PATCH the container fields.

Sharing — SHARED top-neuron + three scopes

ScopeWhat you shareReceiver experience
1. Sub-entity (default)Any entity below depth-1 (sub-neuron at depth ≥ 2, project, task, event, note, doc, form)Lands inside their SHARED top-neuron. No parent-path leakage. Breadcrumb: "SHARED › <entity>".
2. Top-level neuronA depth-1 neuron (department-level)Appears as a peer top-level neuron in their IKA. Full subtree visible; nothing above.
3. Whole-IKAAn entire IKAAppears in their IKA switcher with a "shared by <name>" badge.

Schema

Per-entity actions — share button + add-people on every element

Every CUD-able entity (task, event, project, neuron, note, document, form, agent, automation, skill, integration, artifact) carries the same row of action affordances in its panel header and in its list-row hover toolbar:

ActionBehaviorMechanism
Share 📤Opens the share modal: pick recipient (typeahead over platform.people + email invite), pick scope (sub-entity is the default for in-list elements; whole-IKA for IKA-level), pick permission (Full / Edit / Comment / Read). Confirm → writes a shares row and lands the entity in the recipient's SHARED top-neuron.Same primitive across all entities. Click = modal; voice = "share this with X as Edit" routes through the voice matrix.
Add people 👥Opens a typeahead picker over platform.people in scope (current IKA's ika_people first, then federated). Pick one or more → they're attached to the entity. Roles vary by entity type: tasks gain assignees; events gain invitees; projects gain team members; notes/documents/artifacts/forms gain collaborators; agents gain owners.Identical to the drag-drop "Person → entity" gesture in the matrix above. Two paths to the same outcome — drag a person card onto the entity, OR open the entity panel and click "Add people". Either creates an entity_participants(entity_type, entity_id, person_id, role, added_at, added_by) row.
Pin 📌Toggles the entity in the user's MyPanel (per-user, cross-IKA, platform.user_pins). See the MyPanel section.Single tap.
Delete 🗑Soft-delete to the per-IKA Recycling Bin. 5s undo toast. Cascading on recursive entities. See the Recycling Bin section.Single tap; voice "delete this".

Visual: these four buttons live in a compact icon row in every entity panel header (right side, opposite the title) AND surface as hover-toolbar icons on every list row. Same icons everywhere — share / people / pin / delete. The collapsible / draggable / extendable behavior of the panel itself (see Visual reference) does not affect these actions; they sit in the title bar, which is the only thing visible when a panel is collapsed.

Two-button overlap clarification: "Share" gives someone in another IKA / outside this neuron's natural ACL access via SHARED. "Add people" attaches a person who already has access (or whose access flows from the neuron's permissions) as a participant — assignee, invitee, collaborator, owner, etc. Different intents; both available on every entity.

Search — per-list + global

SurfaceBehavior
Per-list searchTop of every list inside a neuron view. Real-time client-side filter on the loaded list. Matches name + description + tags + assignee.
Global IKA searchTop of chrome. Auto-populating typeahead across every entity in the current IKA. Results show entity icon + name + breadcrumb path. @/# prefixes filter by entity type. Click = navigate.

Implementation: per-IKA inverted index over (entity_type, entity_id, name, description, tags, breadcrumb_path) via Postgres tsvector + GIN. Permissions enforced at query time. Cross-IKA search is out of scope for v0.

Deep linking — layer 1 (BI) + layer 2 (Operations)

Layer 1 — BI

StateURL form
Home/#/<ika>/home
Global view/#/<ika>/layer1
Division/#/<ika>/layer1/<division>
Brand/#/<ika>/layer1/<division>/<brand>
Tab + drill/#/<ika>/layer1/<division>/<brand>?tab=okr&drill=ventas-totales

Layer 2 — Operations

/#/<ika>/layer2[/<neuron-path>...][/<entity-type>/<slug>][?tab=<data|timeline|calendar>][&phase=][&subtask=][&drill=]

Examples

IntentURL
Operations root/#/msp/layer2
Sub-sub-neuron (depth 4)/#/personal/layer2/social/sports/basketball/tuesday-pickup
Open project/#/msp/layer2/marketing/project/branding-campaign
Project Timeline + phase/#/msp/layer2/marketing/project/branding-campaign?tab=timeline&phase=research
Form submission/#/msp/layer2/hr/form/quarterly-review?drill=submission-12345
SHARED → shared task/#/msp/layer2/shared/task/help-with-q3-launch

Parser + storage

Builder — sandboxed iframe overlay (admin-only)

Builder is the agent-driver overlay used by Mats + IKA team to drive every tenant. End-user prosumers never see it.

PropertyDecision
ShapeSingle builder.js + builder.css overlay bundle. Sandboxed iframe with strict CSP and DOMPurify for any agent-rendered HTML.
StackVanilla. Stays vanilla forever. Same bundle on every host (vanilla + React). Host-agnostic.
VisibilityAdmin-only. Server-side conditional script-tag emission based on /api/v1/auth/me role. Non-admin sessions never download the bundle. Per-tenant toggle is belt-and-suspenders.
BackupsSnapshot the IKA frontend (HTML or React build) AND pin the Builder bundle version active at snapshot time. Builder DATA is always live — never frozen by backups.
God viewSeparate route at builder.ika.ai for super-admin only. Side-by-side Builder instances, one per tenant. Same bundle, N data scopes.
Per-user scopeOne Builder panel per admin, aggregating tasks/feed/Q&A from every IKA the user owns (filter chip per IKA). Cross-IKA isolation preserved at data layer.

What Builder includes

SectionComponents
Top barVoice · Attachment · Snapshot · Pipeline · Steering · Infrastructure · Search-within-Builder
Side panel — tasksTask list (ALL · Active · Q&A · Done · Recycling-bin) · Add-task · Expand/contract
Side panel — Q&AOpen questions · Answer composer · Auto-extraction from agent messages
Side panel — backupsSnapshot list · Rename · Restore · Description editor
Feed areaMessage stream (user / agent / thought / question / answer / status / receipt / tasks)
NOT BuilderIKA switcher · BI ↔ Operations toggle · Global IKA search · Voice prompt-bar (prosumer-facing)

Per-tenant enable/disable

God view's control panel lists every subdomain with an on/off switch. Default for new client tenants = OFF; default for IKA-team tenants (main, hybrid, react) = ON. Disabled = script tag is not emitted server-side; bundle never downloads. Audit log records every toggle.

Network — canonical endpoints

EndpointMethodSchema scopeAuthNotes
/api/v1/bi/feedGETper-IKACookie JWTBuilder data feed (admin-only after /auth/me gate)
/api/v1/ops/*GET/POST/PATCH/DELETEper-IKACookie JWTOperations CRUD on neurons / projects / tasks / etc.
/api/v1/auth/meGETplatformCookie JWTReturns user role; gates Builder + admin surfaces
/api/v1/ws/ticketPOSTplatformCookie JWT30-second-TTL nonce for WS handshake
/api/v1/conversation/turnPOSTplatformCookie JWTHits platform.conversation_* tables (system-wide thread per user). Resolver assembles context, dispatches via LiteLLM, returns turn + action cards.
/api/v1/identity/payloadGETplatformnone (public)Identity payload (headline + body + creator + version + "want to talk more about this?" link). Both vanilla BI's submitPrompt() and Operations's <IkaIdentityModal> consume it.
/api/v1/user_pins/*GET/POST/DELETEplatformCookie JWTMyPanel pin CRUD across all IKAs the user owns.
/api/v1/recycling/*GET/POSTper-IKACookie JWTList, restore, hard-delete soft-deleted entities per IKA.

Visual reference — entity cards

designs may be outdated The screenshots below describe load-bearing card anatomy + behavior. Pixel-level visuals may be out of date until Mats's design refresh lands; spec text is authoritative.

Project card (compact)

Project card

Dual radial chart (% Completed + % Time Left). Phase tabs with per-phase fractions. Priority chip with arrow-cycle. PART OF stats grid as universal entity-anatomy footer.

Project view (full)

Project full view

Phase ribbon across the top. Six column groups (Tasks · Subprojects · People · Events · Docs · Automations) each with their own + button. Right rail: Pomodoro focus circle, MSGS, HISTORY, comment thread.

Event card

Event card

Event-specific countdown radial as hero element. Type chip with cycle arrows. Universal entity affordances (priority chip, attendees, comments, PART OF footer).

Note card

Note card

Block-based (BlockNote). Title / Paragraph / Checkbox as minimum block types. Permissions chip first-class. PART OF footer makes cross-references explicit.

Person card

Person card

Avatar, role, email, "user since". PART OF footer shows what this person is involved in. Send-message footer makes every person card a 1:1 chat surface.

Form card

Form card

Field-type palette: Date · Dropdown · Checkbox · Text · Title · Paragraph. Sections group fields. Save Data submits. Two states: Form Template + Form Submission.

Task Status donut

Task status donut

Five wedges: Pending (dark blue) · In Progress (gold) · Active (green; in-progress AND someone is currently focused via Pomodoro) · Delayed (red) · Completed (green). Aggregated across phases / projects / recursive children of the neuron.

Flowstate line chart

Flowstate

Global user metric. X-axis = time; Y-axis = focused hours per day. Aggregated from Pomodoro sessions across ALL of the user's IKAs. Rendered in chrome (top bar / profile area).

Universal entity affordances

AffordanceNotes
Priority chipHigh / Medium / Low. Color-coded. Cycle arrows.
Permissions chipFull / Edit / Comment / Read. Per-entity ACL.
PART OF stats gridCounts of nodes / subnodes / tasks / projects / automations this entity belongs to.
Pin buttonPins this entity to MyPanel (per-user, cross-IKA).
Delete buttonSoft-delete to per-IKA Recycling Bin (5s undo toast).
Star (favorite) + share arrowMark favorite; forward/share entity.
Avatars + comment thread + historyActive collaborators; MSGS + HISTORY counts; add-comment + Post.
Type iconRocket = project, hexagon = node, calendar = event, etc.

Per-neuron tabs — Data + Timeline + Calendar

TabWhat it shows
Data (default)Top: Task Status donut. Body: 3-column × 5-row grid of all 13 first-class entity lists. Per-task radial with subtask-completion %; per-project compact dual radial.
Timeline (Gantt)Full Gantt of every element in this neuron. Phases shown as colored segments inside project bars. Drag to reschedule; today line; week/month/quarter zoom. Renderer: gantt-task-react.
CalendarSame dated entities as Timeline rendered as Month / Week / Day. Renderer: @fullcalendar/react.

Locked 3-column grid layout

RowColumn 1Column 2Column 3
1Sub-neuronsPeopleAgents
2ProjectsTasksEvents
3DocumentsNotesForms
4IntegrationsSkillsAutomations
5Artifacts (full-width thumbnail tile sub-grid)

Mobile: rows 1–4 degrade to 2-column at <1000px, single-column at <700px. Row 5 stays full-width with tile count auto-shrinking.

Cross-tab focus — single contextual button on the entity card

Clicking any element in any tab opens an entity card overlay (portal at chrome z-index). The card has one contextual button:

Currently in tabButton labelAction
Data"Show on Timeline"Card stays open. Background swaps Data → Timeline. Timeline pans + zooms to fit the bar; bar pulses (gold halo, 2 cycles).
Timeline"Show in Data"Card stays open. Background swaps Timeline → Data. Relevant cell scrolls into view; row highlights briefly.
Calendar"Show in Data" / "Show on Timeline"Two buttons; same pattern.

Closing the card keeps the user in the new tab — the cross-tab move is sticky. The button reads currentTab from store on every render.

Entity panel behavior — draggable, collapsible, extendable

Every entity card / content panel (task, event, project, neuron, note, document, form, person, agent, automation, skill, integration, artifact) opens as an overlay panel at chrome z-index — same portal as the v22 entity card, extending its behavior. Reference UX matches the "Project view (full)" screenshot above (which carries the designs may be outdated note — Mats also has updated screenshots of the content panels — project view full, task panel, event panel, etc. — coming; current entity-panel-behavior subsection is implementation-spec'd from his verbal description and pixel-level visuals will be added when screenshots arrive).

BehaviorHow it works
DraggableHeader is the drag handle. Mousedown / touchstart on header → move via translate(x,y). Position persists per-user per-entity for the session (resets on app reload) via sessionStorage keyed by entityType + entityId.
Collapsible (accordion)Chevron in the header toggles a .collapsed class. Collapsed = title bar only (~40px); expanded = title bar + full body. max-height transition, 200ms ease. Multiple panels can be open simultaneously and collapse independently — useful when juggling several tasks/events with one expanded at a time.
Extendable (drag-resize)Bottom-right corner has a resize handle (Builder-feed style) via vanilla CSS resize: both on the panel container. Min 320×200; max = full viewport. Sized state persists per-user per-entity-type for the session.
CloseClick outside OR the X in the header.
Composes with cross-tab focusDragging or collapsing never changes the active tab. The "Show on Timeline" / "Show in Data" button works regardless of panel position or collapsed state.

Implementation: vanilla CSS resize: both for the corner handle + a small drag-listener on the header for translate; collapse = JS class toggle; persistence via sessionStorage.

Design spec — textures, surfaces, active states

The full color-token reference (sage #b5d5c8, gold #e6be64, dark base #0e1014/#161a22) lives at msp.ika.ai/design/. This section codifies the texture + state vocabulary that load-bearing chrome uses across the v3 build, so Path C engineers can paste it verbatim.

i) Textures — 7 surface tokens

TokenBackgroundBorderRadiusUse
Glass Panelrgba(12,12,16,0.75) + blur(30px)1px white/0.0820pxMain content panels. Soft drop shadow.
Modal Surfacergba(14,17,22,0.97) + blur(12px)1px sage/0.1216pxModals, confirmations, identity.
Card Surfacergba(255,255,255,0.03)1px white/0.0614pxika-card / usecase-card / team-card.
Quote Blockrgba(181,213,200,0.04)3px sage left border0/12/12/0Pullquotes.
Featured Cardrgba(181,213,200,0.06)1px sage/0.1514pxDiscovery + featured surfaces.
Gold Featuredrgba(230,190,100,0.04)1px gold/0.214px"Llave en mano" + special elements.
Cursor Glowradial-gradient(circle, rgba(181,213,200,0.06) 0%, transparent 70%)1px white/0.06 dashed—Cursor-following soft glow.

ii) Sunken area pattern

Used for gate input fields, recessed input wells, anything that should feel "pressed in" / inside the surface. Same dotted radial-gradient texture as the canonical gate-pass input.

.sunken {
  background: rgba(10,10,12,1);
  background-image: radial-gradient(rgba(255,255,255,0.04) 1px, transparent 1px);
  background-size: 6px 6px;
  box-shadow:
    inset 4px 4px 12px rgba(0,0,0,0.8),
    inset -4px -4px 12px rgba(255,255,255,0.05);
  border-radius: 12px;
}

iii) Active-state outline gradient

When a summary box (KPI tile, donut card, dashboard cell) becomes active (focused / pinned / selected), it gets a 1px conic-gradient outline that animates. The base box stays the Card Surface; only the outline gains the gradient. Drop back to the static 1px white/0.06 border when inactive.

.summary-box.active {
  border: 1px solid transparent;
  background-image:
    linear-gradient(var(--card-bg), var(--card-bg)),
    conic-gradient(from 0deg,
      rgba(181,213,200,0.4),
      rgba(230,190,100,0.4),
      rgba(181,213,200,0.4));
  background-origin: border-box;
  background-clip: padding-box, border-box;
  animation: spin-outline 4s linear infinite;
}
@keyframes spin-outline {
  to { --angle: 360deg; }
}

Color tokens (sage / gold / dark base) and the full type ramp are documented at /design/ for the canonical reference; this section is the texture + state delta that didn't fit there.

Forms — agent-driven data collection

Two-tier model:

TierWhat it is
Form TemplateReusable structure: list of typed fields, sections grouping them, default values, validation. Versioned.
Form SubmissionA specific filled instance bound to a context entity (task / event / project / neuron). Carries answers + assignee + completion timestamp.

Field types

Date · Dropdown · Checkbox · Text · Title · Paragraph. Sections group related fields. Save Data submits.

Schema

Timeline (Gantt) — formal algorithm spec

Source: "Timeline Algorithms" by Eng. Alvaro Hurtado Maldonado + Mats's verbal rules. Caveat: the v2 Flutter reference implementation had bugs — vet every algorithm before lifting; re-derive from the Hurtado PDF anything we can't verify.

1. Postulates (14)

#Postulate
1.12D canvas: X = time, Y = rails (one entity per rail or shared by non-overlapping siblings).
1.2User-specific view: each user sees their own assigned entities.
1.3Hierarchical (projects + tasks). Parent's start/end auto-spans children.
1.4Drag-and-drop. Parent drag = children move with it. Drag child outside parent = dissociate.
1.5Anti-collider shifts elements along X-axis to resolve overlaps within a rail.
1.6Resize parent = children auto-fit. Resize causing collision = shift conflicting elements without altering durations.
1.7Initial state: only top-level shown; children load on expand.
1.8Five zoom levels: Month · Week · Day · Hour · Minute.
1.9Two-finger drag = pan. Pinch + mouse-wheel = zoom. Wrap with @use-gesture/react.
1.10Left-side scroll indicator showing position within tracks.
1.11Up to 10 extra rails available below visible tracks; created dynamically.
1.12Continuous track: rails as floats (-8, 2, 5.5, 19), rendered as discrete integers.
1.13External drag-drop integration (in/out of timeline).
1.14Element creation from frontend or backend. Default duration = 1 day.

2. Rail algebra

Add at START → new_rail = first_rail − 10
Add at END → new_rail = last_rail + 10
Add BETWEEN two rails → new_rail = (prev_rail + next_rail) / 2   (interpolation)

3. Drag operations — 4 cases

CaseWhat happens
Drag to same objectChanges start date only; duration preserved. For parent entities, system prompts confirmation before moving parent + children.
Drag to existing rail receiverElement assigned to existing rail. Lane-sharing for non-overlapping consecutive elements.
Drag to new rail (between two)Creates new rail via interpolation (prev + next)/2. Elements below shift down by one.
Drag to neuronEntity becomes part of target neuron.

4. Anti-collider

ScenarioResolution
Future collisionShift the dragged element forward in seconds until clear; recursive on subsequent collisions.
Past collisionPast element stays fixed; dragged element re-positioned.
Existing element clashes with newly-draggedMove existing future element forward (preserves user's drag intent).
Hierarchical scopeCollision logic considers both X-axis time AND Y-axis rails; for parents, accounts for entire range of parent + children.

5. Element creation — 4 paths

PathBehavior
Frontend (user click/drag)getAvailableSlots finds free positions at start/end/within parent.
Backend autogenerate (automation)Get parent's rail (railA) → next element's rail (railB) → place at (railA + railB)/2 if railB exists, else railA + 0.1.
Backend standard generate (new parent)Place parent on last available rail + 0.1 offset; +0.2 per child.
Voice command creationSame anti-collision logic; auto-shifts on collision.

6. Anti-unnecessary-space

When a new rail is created during drag/insertion, the system shifts elements UPWARD to close visual gaps while preserving parent-child hierarchy.

7. Priority module

PriorityDefault placement
HighAs CLOSE as possible to the current date.
MediumBalanced placement.
LowPlaced FURTHER into the future.

Reciprocal: when an element is created far in the future without explicit priority, auto-assign LOW. Manual override always wins. Priority can auto-promote as deadline approaches.

8. Habits — recurrence as property (not new entity)

Recurrence is a PROPERTY on existing Tasks / Events / Form Templates. iCalendar RRULE shape (frequency / interval / byday / until / timezone). Each recurrence generates occurrences rows materialized lazily (on view, not on create) to bound storage. Edits propagate to future occurrences only by default; user can choose "edit just this one" / "edit all future" / "edit all".

Voice command matrix — Operations layer

Everything you can do via clicking or dragging in Operations should be doable by voice. Full scope: 12 entities × 8 operations × pronouns × undo × cross-session continuity. Implemented in waves.

Entity × operation matrix

EntityCreateReadUpdateDeleteMoveAssignShareSet property
IKA"create a new business IKA called Acme""open my Acme IKA""rename current IKA to Acme Corp""delete the Old IKA"——"share with carlos@…""set time zone to CST"
Neuron"create a sub-neuron called Sports""open Sports""rename Sports to Athletics""delete the Empty neuron""move Basketball under Athletics"—"share Sports with my coach""set Sports' icon"
Project"create project Q3 Launch in Marketing""open Q3 Launch""extend Q3 Launch by 2 weeks""delete Old Campaign""move Q3 Launch to Operations""add Carlos to team""share with the agency""set priority high"
Task"create task Buy domain in Q3 Launch""what tasks are overdue?""push to next Friday""delete Acquire domain""make this a sub-task of Launch Plan""assign to Mats" / "assign to marketing agent""share with the contractor""mark complete" / "make recurring weekly"
Sub-task"create sub-task Check pricing""find sub-tasks of Acquire domain""rename Check pricing""delete Check pricing""move Check pricing""assign to Carlos"—"mark complete"
Event"create event Demo Friday at 3pm""what events today?""reschedule to Monday 10am""delete cancelled meeting""attach to Q3 Launch""invite Carlos""share externally""make recurring monthly"
Note"create note Client feedback""find notes about INTUR""append to Client feedback""delete empty draft""attach to Q3 Launch"—"share with Carlos as Read""set permissions to Edit"
Document"upload from desktop""find the brief PDF""replace with new version""delete outdated PDF""attach to task"—"share with the agency""set Read-only"
Form"create Customer Interview form""show submissions from last month""add a Date field""delete unused form""attach to all Sales projects""send to Carlos""share with the agency""make recurring weekly"
Person"add Jane Doe, jane@…, role Designer""find Carlos""update Jane's role""remove Jane""add to Marketing"——"set permissions to Full"
Agent"create agent for Sales""what agents are running?""update Marketing agent prompt""deactivate unused agent""bind to all sub-neurons""assign task to Sales agent"—"set monthly budget to $500"
Automation"create automation that posts daily standup at 9am""what automations in Sales?""change to 10am""disable broken automation""move to a different project""assign failure handler to Mats"—"pause for a week"

Conversational continuity (pronouns + context)

PatternResolution
"create a task here"Container = current neuron in the user's view.
"move it to ProjectY""it" = most recently created/edited entity in this turn.
"and add a sub-task: …"Parent = the task we just created.
"do the same in HR"Repeat previous operation with container = HR neuron.
"undo"Revert last operation within voice session.

Confirmations + safety

Operation classPolicy
Create / Update / MoveEcho and execute. Tentative-placement applies.
ReadShow results.
DeleteAlways confirm. Soft-delete to Recycling Bin with 5s undo toast.
Share / external recipientConfirm recipient + permission level; triggers second-opinion if enabled.
Money / identity / permission changesAlways confirm + always second-opinion (non-bypassable).

OPS_MAP — per-IKA item map

One JSON file per IKA (operations_item_map.json) loaded into a global OPS_MAP on app boot, hot-patched over WebSocket on every CUD. Indexes: neurons · projects · tasks · events · notes · documents · forms · people (with platform_person_id) · agents · integrations · skills · automations · artifacts · vocab · aliases. Resolver runs in pure JS (<5ms exact + Levenshtein-≤2 fuzzy match) — zero LLM token cost on resolution.

SPINE — cross-IKA addressing

user_ika_spine.json per user, loaded once at login (~<100KB even for 10 IKAs). Indexes: ikas · top_neurons (depth 0–1) · favorites (top-30/IKA by frequency) · recent (last 50 across all IKAs) · people_federation (one row per real human via platform_person_id) · shared vocab. Resolver: three concentric tries — local OPS_MAP → SPINE → server-side resolver. Cross-IKA confirmation toast always echoes destination IKA name.

Tentative-placement pattern — never lose voice input

Voice utterance → IKA picks best guess → entity is persisted immediately with a tentative flag → confirmation modal appears as a passive toast → if dismissed/ignored, entity stays at IKA's best-guess location with a "does this belong here?" badge until reviewed.

TriggerBadge
Cross-IKA placement"Placed in Personal — does this belong here?"
Ambiguous neuron"Placed in Marketing (also matched: Sales, Operations) — right home?"
Missing container"Saved to Inbox — move to a project?"
Unparseable slot"Couldn't parse 'next-next Tuesday-ish' — set a date?"
Cross-IKA assignee"Assigned to Carlos (Acme) — same Carlos?"
Bulk dump"5 tasks created — review placements?"

Schema: every CUD-able entity has tentative (bool) + tentative_reason + created_via_voice (raw utterance). Bulk-review surface: "Tentative items" view per IKA + global "Tentative across all my IKAs" view in chrome.

Implementation

IKA Conversation Surface — IKA-as-entity

The prompt bar treats IKA as a CLI. The Conversation Surface makes IKA a conversational entity the user can talk to — knows where they are in the UI, what they just did, who they are, and can both talk and act.

The classifier gate — six exits

kindTriggerSurface
identity"quien eres" / "who are you" / "what is IKA" / "quien creo IKA" / "sobre IKA". Pre-classifier short-circuit on BOTH typed and voice input.Open <IkaIdentityModal> (React component mirroring the vanilla DOM). Both BI's submitPrompt() and Operations's classifier consume GET /api/v1/identity/payload. Modal includes a "want to talk more about this?" link that promotes into the conversation pane.
catalog"ayuda" / "what can I ask" / "qué prompts"Open the prompt catalog.
noopGreetings, nonsense, mic testToast back. No surface opens.
navNavigation verb + resolver hits a target in OPS_MAP / SPINE; or single-shot CRUD that resolves cleanly.Execute inline. Toast + nav (or toast + tentative-placement). No surface opens.
queryExplicit analyze keyword OR strong query signals (reasons, comparisons, "why", "how come").Open the analyze confirmation modal. Result returns inline; "let's discuss this further" button promotes to conversation.
conversationMulti-turn / open-ended / "let's …" / "tell me about …" / direct address to IKA OR pane already open OR explicit chat-icon click.Open the conversation pane. Utterance becomes first user message in the active thread. Pre-query dedup runs first — see below.

Pre-query knowledge-graph dedup (v25.9 / O3)

Before the conversation surface dispatches the Sonnet turn, run a fast pre-flight against the per-IKA knowledge graph. Extract the prompt's key entities + topics with the deterministic typed-link parser (gbrain lift #1, no LLM cost), then RRF-retrieve (lift #2) over assessment titles + tags + body, with backlink boost (lift #3). If a high-confidence match exists (RRF score ≥ threshold) for content the user already wrote, surface it inline before the LLM call:

You wrote about this on 2026-03-12 — open that note, or generate fresh anyway?

  → "Q3 launch retrospective" (assessment, Marketing / Brand-launch, 4 backlinks)
    [Open]  [Generate anyway]

The user can pick the existing note and continue the conversation from there, or override and generate fresh. A "generate anyway" click logs the dedup-miss for that thread so the dream-cycle can decide whether the new content should update the existing assessment or stand alone.

Why: stops re-discovery of ideas already captured. Reinforces the compiled-truth tier (lift #4) — the user is reminded that the wiki HAS the answer, not just the raw events. Cost: pure JS RRF over local indices for the lookup; ~5ms; zero LLM cost. Threshold tunable per-IKA in Settings → Conversation; default 0.6 (RRF score) which is conservative — only surface if there's a strong match.

Pane shape

Threads — system-wide, per user

v0: ONE conversation per user, system-wide across ALL their IKAs. Lives in platform.conversation_threads + platform.conversation_messages. Pane scopes context per-turn to in-focus IKA (recorded as focused_ika_id on each message), but the THREAD is single + global. Like iMessage with one contact, where that contact is IKA herself across your whole multi-IKA life.

v1: hybrid sub-conversations — when the user spends >N turns on a single neuron/project, IKA offers "pin this as a thread". Pinned threads listed in a sidebar.

Context the resolver assembles every turn

LayerSource
Where you arecurrent IKA · neuron breadcrumb · active tab · selected entity
Recent actionslast ~20 actions in this session
What existsOPS_MAP (in-focus IKA) + SPINE (cross-IKA slim)
What you've decidedper-IKA knowledge-graph (gbrain) — assessments first, events as backup
Who you areFederated Honcho — platform.honcho_profile(user_id) with optional per-IKA overlays
Conversation so farlast K=20 turns + summarized older
Tools availablefull voice matrix + skills installed in this neuron + active integrations

Capabilities IKA carries into every turn

  1. Answer — pulls from OPS_MAP + knowledge-graph + integrations.
  2. Act — same operations as the voice matrix. Renders as action card; tentative-placement applies.
  3. Navigate — pans the background tab + pulses the entity. Pane stays open.
  4. Draft — emails / briefs / agendas composed inline with Save / Send / Edit buttons.
  5. Deep research — invokes Computer Use / web tools / MCP integrations / sub-agent delegation.
  6. Connect dots proactively — briefings and proactive observations accumulate in the conversation thread and surface as an unread count on the chat icon. No UI-blocking interrupts. Pane never auto-opens, never plays toasts/voice alerts.
  7. Ask back when ambiguous — conversation surface = ask first; voice matrix = act tentatively then ask.

Entity card with single contextual button

Entity cards rendered inside the pane carry the same single contextual button as elsewhere — label toggles by current tab ("Show on Timeline" in Data; "Show in Data" in Timeline). Calendar shows both labels. Closing the card keeps the user in the new tab.

Live planning animation — Timeline as the creation canvas

When IKA creates entities in response to a user request (project, task, sub-task, event, recurring occurrence), the Timeline tab becomes the canvas where the creation plays out as an animation — so the user watches IKA plan in real time instead of seeing a wall of finished JSON. Same primitive as v22's Show on Timeline, but the trigger is creation, not focus.

User asks forWhat animates
Project ("plan a brand-launch project for Q3, with research, design, build, ship phases")Background tab swaps to Timeline if not already there. Big project block animates in at the chosen rail (slide-in from left, ~250ms). Phase ribbons inside the bar fade in left-to-right. Sub-tasks animate in one at a time, each with its own slide-in (~150ms each, staggered). Each sub-task that has its own sub-tasks expands inline (chevron rotates, max-height transition) and the nested sub-tasks animate in too. The user sees the project skeleton, then the structure, then the leaves — like watching IKA think out loud.
Task ("create a task to call Acme on Friday")Timeline opens; the rail/slot where the task lands lights up briefly (gold halo), then the task bar slides in. Entity panel opens automatically focused on the new task (per the v25.1 panel behavior — draggable / collapsible / extendable).
Sub-task ("add a sub-task: check pricing")Timeline opens; the parent task expands inline (chevron rotates, sub-task lane reveals); the new sub-task animates into the parent's expanded lane. Entity panel for the new sub-task opens.
Event ("schedule a Demo with INTUR Friday 3pm")Timeline opens at the appropriate temporal scale (day-zoom for events <= 1 day; week-zoom for spans up to 7 days; month-zoom otherwise — same auto-zoom as Show on Timeline). The event slot lights up; the event block slides in.
Recurring task / eventThe first occurrence animates in with the same slide-in. Subsequent occurrences fade in across future weeks at half-opacity (so the user sees the recurrence pattern without it looking like clutter).
Note / Document / Artifact / Form / Person / Agent / Automation / Skill / Integration
(no Timeline counterpart)
Background swaps to Data tab. Neuron breadcrumb navigates to the destination neuron. The relevant list cell scrolls into view. The new row flashes (gold halo, 2 cycles). Entity panel auto-opens. See "Non-timeline entities — Data-tab flash" below.

Non-timeline entities — Data-tab flash

Entities without a Timeline counterpart (note, document, artifact, form, person, agent, automation, skill, integration) get the Data-tab equivalent of the same animation:

  1. Background tab swaps to Data if not already there (same cross-tab swap primitive as Show on Timeline / Show in Data).
  2. Timeline auto-navigates to the destination neuron (the one where IKA placed the entity per Auto-routing) — neuron breadcrumb updates in the chrome.
  3. The relevant list cell in the 13-cell grid scrolls into view if it's below the fold (e.g. Notes is row 3 col 2; if you were looking at row 1, the grid scrolls down to make Notes visible).
  4. The new item row flashes — gold halo pulse, 2 cycles, ~600ms total. Same halo primitive as the Timeline-bar pulse.
  5. The entity content panel auto-opens for the new item, focused, draggable / collapsible / extendable per v25.1.
  6. For multi-create requests on non-timeline entities (e.g. "create 5 notes for the kickoff: agenda, attendees, action items, blockers, next steps"), each item flashes in staggered (~120ms apart) before the panels open one by one. Last-created entity gets the open panel; the others land flashed but unopened, ready to click.

If the destination neuron is in a different IKA from the in-focus one (cross-IKA write per v22 / SPINE), the IKA switcher first animates to the destination IKA (~200ms slide), then the Data-tab flash plays. Mandatory cross-IKA confirmation toast (per v21.4 tentative-placement) still fires alongside the flash so the user sees both "where it landed" + "is this right?".

Animation primitives

Interaction during animation

Implementation

Server returns the full creation plan as a single response (project + tasks + sub-tasks + dates + assignees) so the animation has the complete dataset before the first frame. Client renders a frame-by-frame timeline of bar-insertions using the existing gantt-task-react renderer + a thin animation layer (CSS transitions on transform + opacity; no extra animation library required). The same primitive composes with v22 cross-tab focus — if the user is in Data when the creation starts, the Show-on-Timeline button on the entity card automatically fires before the animation begins, ensuring the user sees the plan land.

Proactive briefings — ON by default

Briefings post into the system-wide conversation thread asynchronously and surface as an unread count on the chat icon. Per-user (not per-IKA — one set per user):

Single opt-out flips all four off in Settings → Conversation. Optimization: morning brief + overdue nudge run on Haiku; evening + weekly stay on Sonnet.

Orphan items surfaced in the morning brief (v25.9 / O2)

The dream-cycle (gbrain lift #5) already detects orphan neurons + isolated notes — entities with no incoming or outgoing typed-links. v25.9 promotes that finding from a backend audit log into a user-facing morning-brief sub-section. Any neuron / project / note / event / artifact with zero in-edges and zero out-edges as of the last dream-cycle pass shows up under a "Review isolated items" header inside the morning brief. Three inline actions per row: Link (opens a typeahead picker against OPS_MAP to attach to a project / neuron / parent), Confirm standalone (sets a standalone flag so it stops surfacing), Delete (soft-delete to Recycling Bin). Capped at top-10 by recency so a long-neglected backlog doesn't drown the brief; an "(N more)" link expands the rest in the conversation pane.

Why: orphans are the failure mode of every personal-knowledge system — content drifts off the map. Surfacing them at the brief level (not as a backend audit) reuses the user's already-existing morning-review attention. Cost: zero additional LLM calls — the dream-cycle pass already produces the list.

Cost framing

Voice + text — same thread

Voice transcription appears in user message bubble; reply is rendered text AND spoken (per existing IKA voice). Show-thinking toggle controls whether thoughts are spoken (default: no — thoughts are visual only).

History persistence

Cross-IKA conversations

You can ask in any IKA's conversation a question that pulls answers from any of your other IKAs via the SPINE. Reads across without confirmation; writes require destination-IKA echo (tentative-placement). RLS isolation preserved server-side. Per-IKA opt-out toggle.

Builder vs Client surfaces

RoleWhat they see
ClientConversation pane only. Show-thinking OFF.
AdminBoth Builder feed AND client conversation pane. Show-thinking ON.
God viewBuilder feed only.

Schema

MyPanel pin — per-user, cross-IKA

Every CUD-able entity (task · event · project · neuron · note · document · form · person · agent · automation · skill · integration · artifact) has a pin button that adds it to the user's MyPanel — the home dashboard / launch view that already exists in BI.

Behavior

Schema

Recycling Bin — soft-delete + restore

Every CUD-able entity has a delete button that sends the entity to a per-IKA Recycling Bin. Not a hard delete.

Soft-delete shape

UX

Endpoints

Project structure — Phases

Every project has phases as first-class structure. Default phases:

  1. Initiation
  2. Definition
  3. Research
  4. Planning
  5. Design (when applicable)
  6. Development
  7. Implementation
  8. Follow-up

Phases are user-customizable per project. Each phase contains its own slice of tasks / subprojects / people / events / docs / automations. The phase ribbon at the top of the project view scrubs across phases; tasks within a phase aggregate up to the project-level "% Completed" radial.

Schema: phases table with project_id, order, name, start_date, end_date. Items reference phase_id (nullable).

Priority — first-class on tasks, projects, events

Every Task / Project / Event carries a priority: High / Medium / Low. Used for:

Schema: priority enum on tasks/projects/events. Default Medium.

Flowstate — global user metric

Pomodoro tracks how much time the user is focused on their tasks overall — global flowstate time across all of the user's IKAs combined. Property of the user, not of any particular neuron or IKA.

Storage: pomodoro_sessions at user level with user_id, ika_id, task_id, started_at, ended_at. Aggregation = single SUM over user's rows.

Leadership — accountable owner per project & per task

ConceptQuestionCardinality
LeaderWho is accountable for this happening?Exactly one human, per project + per task
Assignee(s)Who is doing the work?Zero or more (humans + agents)
Permissions (ACL)Who can see / edit / share?Many — per the ACL

Where leadership applies

EntityHas a leader?Default
ProjectYes — single humanThe user who created the project
Task / Sub-taskYesInherited from parent; overridable
EventYes (the organizer)The user who created the event
FormYes (the form owner)The user who created the template
NeuronOptional (department leader)Inherited; can be set explicitly
Document, Note, Person, Agent, Integration, Skill, AutomationNo—

What leaders can do

Co-effective leadership through whole-IKA Full share

At schema level, only one leader_id. A whole-IKA Full share grants the receiver effective co-leadership (they can edit leader_id). This is a design feature; both parties agree socially who is "the" leader. The audit log + leadership_log show every transfer.

Agent-as-assignee

Leaders can assign tasks/projects to agents. Agent becomes assignee; leader stays the accountable human. Agent failures spawn a Form addressed to the leader. Cost attribution: agent invocations bill against the agent's budget; over-budget = task auto-paused + leader notified.

Assignment suggestions

Before a leader assigns, IKA presents a ranked list of candidates (humans + agents) with a fit score. Signals: skill match · integration access · current load · past success rate · recency · cost · availability. Auto-assign mode = opt-in per IKA; default OFF.

Schema

Permissions — per-entity ACL

LevelCan
FullRead + Write + Delete + share + change permissions
EditRead + Write
CommentRead + add comments
ReadRead only
NoneHidden / not in queries

Inherited from parent neuron by default; overridable per entity. Schema: acl table — (entity_type, entity_id, principal_id, level). Enforced via Postgres RLS as the floor; ACL on top.

Artifacts — on-the-fly created pages per-neuron

Every page we've created on the fly (/paperclip, /openclaw, /intur/v2, /queplan/marcas, /tokens, /gstack, /ika-pro-architecture) is an artifact. Self-contained HTML, lives at a stable URL, owned by one neuron.

Anatomy

UX

Inside row 5 (full-width), Artifacts renders as a thumbnail tile sub-grid (auto-sizing 3-5 tiles per row). Click → opens artifact in a new browser tab. Hover → preview overlay with version + cross-references. Drag a tile onto a project/task → cross-reference. + button → naming dialog → opens an empty editor or imports HTML.

Schema

Auto-routing — IKA decides where the output lives

The user shouldn't have to tell IKA where to save things. When the user asks for a write-up or a file, IKA picks the container and the entity type. Asks only when truly ambiguous. No babysitting required.

User asks forIKA producesSaves underDeeplink shape
"report on …", "summary of …", "write-up", "analysis", "brief" (no file format mentioned)Artifact (HTML)Most relevant task / project / neuron/.../artifacts/<slug>
"spreadsheet", "csv", "xlsx", "pdf", "docx", "word doc", "slides", "deck"Document (file-bytes in SeaweedFS)Most relevant task / project / neuron + appears in Documents list/.../documents/<slug>
Ambiguous containerEither, at best-guess location, with v22 "does this belong here?" badgeBest-guessSame shapes; badge surfaces in entity row

Container resolution — Artifacts

Container resolution — Documents

Disambiguation rule

File-format keywords (spreadsheet, xlsx, csv, pdf, docx, word doc, slides, deck) → Document. Generic "report / analysis / summary / write-up / overview / brief" → Artifact (HTML, lives at a URL). When confidence is low, IKA persists at its best guess and tags with the v22 tentative-placement "does this belong here?" badge — user can confirm, move, or dismiss to keep the badge.

Per-neuron Integrations — domain-scoped connections

The MCP / API integration registry is global to a tenant's IKA, but each NEURON exposes only the integrations relevant to its domain. Per-neuron scoping = least-privilege for agents + cleaner UX.

Examples by domain

Neuron domainTypical integrations
FinanceQuickBooks · Xero · Plaid · Stripe · banking · Expensify · Gusto
HR / PeopleBambooHR · Gusto · Lattice · Greenhouse · Slack · Workspace admin
MarketingHubSpot · Mailchimp · Buffer · Canva · Photoshop · Adobe CC · Google Ads · Meta Ads
SalesSalesforce · HubSpot · Pipedrive · Apollo · Calendly · Loom · Zoom
OperationsLinear · Jira · Notion · Zendesk · PagerDuty · Datadog · GitHub · GitLab
Personal — HomeHue · Nest · Ring · SmartThings · Tesla · iRobot · Sonos · Apple HomeKit
Personal — HealthApple Health · Whoop · Oura · MyFitnessPal · Strava · Cronometer
Personal — FamilyGoogle Calendar · Cozi · school portals · pediatrician portal · TimeTree
UniversalGoogle Drive · Gmail · Slack · WhatsApp Business (agent-tool only) · web search · Computer Use

Inheritance + override semantics

RuleBehavior
Inherit from parentSub-neuron inherits its parent's connected integrations by default.
Override at any depthA descendant can ADD its own integrations OR DISABLE a parent's integration for this branch.
Cross-neuron dragCopies the credential reference (not the credential — vault still owns it). Revoking at source revokes both.
Per-IKA root canonicalThe IKA root (depth 0) holds all connected integrations canonically. Sub-neurons display the inherited subset.

Schema

Per-neuron Skills — capability bundles

Where Integrations are external connections, Skills are capability bundles — prompts + tools + scripts the agent uses to do something domain-specific. Skills are auto-activated from context: the LLM decides when one fires. Explicitly user-invoked actions live under Commands instead. Skills are also a component of a Plugin bundle (the outer role-shaped install unit per anthropics/knowledge-work-plugins compatibility).

Examples by domain

Neuron domainTypical installed skills
Marketingprogrammatic video skill (alternatives: Revideo Apache-2.0 / Manim BSD / FFmpeg pipeline / Veo-router via API) · Image generation (Nano Banana, Imagen, Midjourney router) · Brand-voice copywriter · Social-post composer · Newsletter formatter · A/B-test analyzer · design-motion-principles · frontend design toolkit
SalesCRM-record summarizer · Cold-email composer · Proposal generator · Deal-status reporter · Customer-interview synthesizer · Pricing-comparison builder
FinanceInvoice extractor · Expense categorizer · Cash-flow projector · Tax-form filler · Reconciliation helper · Budget vs actual analyzer
HR / PeopleJD generator · Resume ranker · Interview-feedback synthesizer · Performance-review drafter · Onboarding checklist builder
Operations / EngineeringIncident postmortem drafter · ADR writer · Runbook generator (slash entries /security-review, /qa, /codex are Commands, not Skills)
PersonalRecipe generator · Grocery-list optimizer · Workout planner · Meal planner · Birthday-gift idea generator · Trip itinerary builder · Homework helper
UniversalDocument summarizer · Translation · Web-research (meta-entries skill-creator, skill-search, /learn are Commands)

Skill anatomy

Two meta-capabilities (always available)

CapabilityWhat it doesType
skill-creatorBootstraps a new skill from a description. Publishes drafts only; agents cannot invoke own drafts; explicit human publish required.Command (post-v25.11 migration)
skill-searchSearches global vetted catalog + per-IKA catalog. Filters by domain, vetting tier, popularity.Command (post-v25.11 migration)

Vetting tiers

TierSourceInstall policy
Anthropic-shippedOfficial Anthropic Claude skillsAuto-allowed
IKA-curatedSkills we vet + publishAuto-allowed; flagged "Vetted by IKA"
Community-with-sigOpen-source skills with valid ed25519 signature + declared licenseAllowed with one-click confirmation; manifest must declare license ("Not stated" → blocked).

Skills run in Firecracker microVMs (reusing Computer Use infra), not in-process. Hash re-fetched weekly with drift alerts. Per-IKA skill-count cap + weekly digest of new skills authored.

Schema

Per-neuron Commands — explicit slash-invoked actions

Where Skills are auto-activated from context, Commands are explicit user-invoked actions surfaced in a slash-command palette and as autocompletes on "/". The split mirrors anthropics/knowledge-work-plugins's skills/ vs commands/ separation (see /skills/). Same per-row inheritance shape as Skills / Integrations / Agents / Automations.

Examples by domain

Neuron domainTypical commands
Sales/call-prep · /call-summary · /forecast · /pipeline-review · /account-research
Marketing/brand-voice-check · /campaign-plan · /social-post · /newsletter · /ab-test-analyze
Finance/reconcile · /budget-vs-actual · /cashflow · /expense-categorize
Operations / Engineering/security-review · /qa · /codex · /postmortem · /adr · /runbook
Customer Success/ticket-triage · /escalation-draft · /kb-update
Product/spec · /roadmap · /user-research-synth
Universal/learn · /skill-creator · /skill-search · /plugin-install · /deep-research

Schema

Commands run under the same Firecracker isolation + cost-cap governance as Skills.

Superpowers — engineering-discipline meta-skills + SessionStart hooks

Audit of github.com/obra/superpowers (Jesse Vincent, MIT, cross-platform coding-agent skills framework) — full page at /superpowers/. Different category from Anthropic's role-shaped plugins: Superpowers ships process discipline, not domain knowledge. Five adopts + two mechanical adopts; nine skips.

Five skills adopted as IKA-curated Engineering-neuron defaults

SkillWhy
brainstormingUniversal — also applies to Marketing/Product neurons
writing-plansPairs with our Tasks/Projects entities; structured output
systematic-debuggingAligns with our "evidence over claims" preference
verification-before-completionDefault on agent-as-assignee task closure (the "done" button becomes a check, not a claim)
writing-skillsLift its rules into the skill-creator system prompt

Skipped: dispatching-parallel-agents / using-git-worktrees / subagent-driven-development / finishing-a-development-branch (duplicate Paperclip + out-of-posture). Partial / opt-in: test-driven-development / executing-plans / requesting-code-review / receiving-code-review.

SessionStart hook contract

Superpowers ships a SessionStart hook on matcher startup|clear|compact that re-injects always-on skill content. Maps onto IKA's Conversation Surface context-assembly:

Hook eventIKA equivalentRe-injection
startupFirst turn of a new threadAlways-on skills + IKA universal preamble
clearUser invokes "new conversation"Same as startup
compactAuto-compaction truncates historyRe-inject always-on skills + last-N-message summary so discipline survives the truncation

Schema: always_on BOOL column on neuron_skills (default false); new skill_hooks table forward-compatible with Anthropic plugin hooks if/when they ship a hook schema.

Trigger-focused description rule

Skill description must say when to invoke ("Use when…"), never what the skill does. The LLM router reads description first; workflow-summarizing descriptions cause silent failures where the model follows the description and never loads the body. Enforced in skill-creator system prompt + publish-path validator (rejects workflow verbs like "does", "performs", "generates").

RED/GREEN skill test

Authors of community-with-sig tier skills must ship a test pair: prove the agent fails the task without the skill (RED), then succeeds with (GREEN). New skill_tests table; CI runs at publish-time + weekly drift check. Anthropic-shipped tier exempt; IKA-curated required for new authoring (existing skills back-tested incrementally with 90-day deadline).

What we do NOT adopt

Effort estimate: ~4 days for S1–S6 (skill import + hook contract + description-rule + RED/GREEN test + verification-default + skill-creator prompt update). All slot inside existing Skills + Commands + Plugins sections — no new entity needed.

Plugins — role-shaped bundles (Anthropic-compatible)

Plugin = a role-shaped install unit bundling Skills + Commands + Integrations + Agents + Automations under one manifest. Adopted from anthropics/knowledge-work-plugins — full analysis at /skills/. Sits one level above the four (now five) per-neuron registries; install fans out into all of them; uninstall removes the fan-out.

Why this layer exists

Today our 6 onboarding templates already act as plugin-shaped bundles, but at the IKA level (top-level neuron + starter content). A Plugin is the same shape one scope smaller: per-neuron. Users install a Plugin into a Sales neuron and get the 5+ skills, 5+ commands, integration recommendations, agent templates, and automations that role typically needs — in one action.

Wire format — Anthropic-compatible

Plugin manifest mirrors Anthropic's .claude-plugin/plugin.json; connector wiring mirrors .mcp.json. Effect: any plugin from anthropics/knowledge-work-plugins (or any community plugin built to the same spec) installs into an IKA neuron without translation. Bidirectional benefit: IKA-built plugins also run in Cowork and Claude Code, growing distribution beyond our own surface.

The 11 Anthropic plugins → IKA neuron map

Anthropic pluginIKA neuron domainAuto-install in template
productivityOperations (cross-cutting)Company
salesSalesCompany · E-commerce
marketingMarketingCompany · E-commerce · Creativity
financeFinanceCompany (+ light-mode on Personal Finances)
customer-supportCustomer SuccessCompany · E-commerce
product-managementR&D / ProductCompany
dataEngineering / DataCompany · E-commerce
legalLegal (sub-neuron of Operations)opt-in
bio-researchR&D (vertical-specific)Health (when clinical)
enterprise-searchUniversal (root)All templates — installs at IKA root, inherits down
cowork-plugin-managementUniversal (meta)maps to IKA skill-creator/skill-search meta-commands

IKA-original plugins (the gap Anthropic doesn't cover)

Plan: ship these as IKA-curated tier plugins; contribute back upstream post-v1.

Schema

Vetting tier mapping

Anthropic-shipped tier expands to cover the official anthropics/knowledge-work-plugins repo + future Anthropic plugin catalogs. Same auto-allow + hash-drift + weekly-digest machinery; no manifest-checks for sources signed by the trusted org. IKA-curated + Community-with-sig tiers unchanged.

Differentiators we keep

Per-neuron Agents — per-neuron + global per-IKA

Agents are Paperclip-managed AI workers bound to a neuron (or a task). They consume Skills + Integrations available in their neuron scope and operate under Paperclip's governance + budget rules.

Agent-as-assignee

Leaders can assign tasks/projects to agents. Agent becomes assignee; leader stays the accountable human. Agent moves task through pending → in-progress → submitted-for-review.

Inheritance

Same shape as Integrations / Skills / Automations. Schema: neuron_agents with scope ENUM('inherits_down','neuron_only') + overrides_parent BOOL + override_mode. Default scope = inherits_down.

Per-neuron Automations

Recurring agent-driven workflows scoped to a neuron. Triggered by events / schedules / state changes.

Inheritance

Same unified shape as Integrations / Skills / Agents. Schema: neuron_automations with scope + overrides_parent + override_mode. An Automation defined on Marketing fires on every project/task in Marketing AND every sub-neuron AND their descendants, until a descendant overrides.

Inheritance semantics — unified across Integrations / Skills / Commands / Agents / Automations / Plugins

All six link tables (neuron_integrations · neuron_skills · neuron_commands · neuron_agents · neuron_automations · neuron_plugins) share the same per-row schema. neuron_plugins is the bundle-level row whose install fans out into the other five — see Plugins.

QuestionAnswer
Where does a parent's row fire?If scope='inherits_down', fires on the defining neuron AND every descendant, until overridden.
What data scope when firing on a descendant?The firing-row's neuron RLS context — sees what an agent/skill/integration scoped to that descendant would see, not what the parent could see. SHARED quarantine still gates inbound shared content.
What does a descendant override do by default?Replaces. Parent's row does NOT fire on this subtree; the descendant's row fires instead.
Is there an "and-also" mode?Yes — override_mode='and_also': both rows fire on this subtree.
UX chip per row"from <parent>" · "this neuron only" · "overrides <parent>" · "+ also from <parent>".

Onboarding — IKA templates by ICP

New users land on a template picker. Each template = a preconfigured top-level IKA (default neurons + skills + integrations + starter content). Six templates ship at v0.

The 6 templates

TemplatePrimary ICPDefault top-level neurons
PersonalAnyone running their personal life as a systemFamily · Health · Social · Hobbies · Finances · Home · Travel
CompanyBusiness owners / founders / B2B servicesOperations · Marketing · Sales · HR · Finance · Customer Success · R&D
E-commerceD2C brands / Shopify ownersInventory · Orders · Suppliers · Marketing · Customer Service · Returns · Fulfillment
CreativityAgencies · creators · production studiosProjects · Clients · Production · Distribution · Portfolio · Reviews · Pitches
HealthAthletes · biohackersWorkouts · Meals · Sleep · Supplements · Doctor visits · Medications · Symptoms
School / StudentHS / university / professional learnersSubjects · Classes · Assignments · Exams · Notes · Study Groups · Career

Starter prompts (5 hardcoded per template, in the v0 React bundle)

Template5 starter prompts
Personal"Create event for dinner with Mom Sunday at 7pm" · "Add workout to Health for tomorrow morning" · "Create note Vacation ideas in Family" · "Set recurring grocery-shopping every Saturday" · "Show me everything planned this week"
Company"Create project Q3 Launch in Marketing" · "Add task to research competitors and assign to Carlos" · "Schedule 1:1 with Jane next Tuesday at 2pm" · "Create recurring weekly retro form" · "What tasks are overdue across all projects?"
E-commerce"Create project for Holiday campaign" · "Add task refresh product photography by November 1" · "Set recurring inventory check every Monday" · "Create customer-feedback form" · "Show me orders from last week with low margin"
Creativity"Create client project Acme Brand Refresh" · "Add task draft 3 logo concepts by Friday" · "Schedule review call next Wednesday at 10am" · "Make recurring weekly status form for client check-ins" · "Show all projects in Production phase"
Health"Create recurring strength workout MWF at 7am" · "Add doctor visit October 15 at 3pm" · "Set meal planning task every Sunday evening" · "Log sleep quality as daily habit" · "Show Whoop data for past week"
School"Create project for Calculus midterm in 3 weeks" · "Add tasks for chapters 5 through 8" · "Schedule study group every Tuesday at 6pm" · "Create recurring assignment-tracker form" · "Show upcoming exams sorted by date"

Onboarding flow

  1. Welcome screen — "What are you using IKA for?" → 4 ICP buckets.
  2. Template picker — show templates filtered + ranked by ICP.
  3. IKA naming — user names the new IKA.
  4. Bootstrap — agent provisions neurons, skills, integrations (OAuth click-through).
  5. Starter content — template seeds 3-5 example projects + 5-10 example tasks/events/notes.
  6. Prompt onboarding — first 5 example prompts as "Try this" buttons.
  7. First-week guidance — daily nudges via in-product notifications.

Prompt catalog — public-facing prompt library

End-user-facing catalog embedded in onboarding, the help menu, and contextual "Try this" hints inside Operations. Distinct from the internal voice command matrix.

Catalog entry

Surfaces

SurfaceBehavior
Onboarding step 65 starter prompts filtered by chosen template
Help menuBrowse-able catalog by entity type → operation. Copy + Run buttons.
Empty-state hintsShow 2-3 catalog entries relevant to the empty list.
Slash menuTyping / opens catalog as typeahead.
Voice listening hintRotating ghost-text shows random catalog examples.
"Try this" toastsAfter a successful action, suggest the next 1-2 logical prompts.

v0 implementation

Starter prompts hardcoded in the React bundle. popularity_score + prompt_runs telemetry catalog table deferred to v1.

MCP / API integrations — agents executing in the real world

CategoryExamplesConnection method
CommunicationSlack · Discord · Email · SMS (Twilio) · WhatsApp Business (agent-tool only)MCP server or OAuth + API
Calendar / SchedulingGoogle Calendar · Outlook · CalendlyOAuth + API
File / StorageGoogle Drive · Dropbox · OneDrive · BoxUppy Companion
CreativeAdobe Premiere · Photoshop · Illustrator · Figma · CanvaAdobe APIs / Figma REST / Photoshop UXP
Code / DevGitHub · GitLab · Linear · Jira · Vercel · NetlifyOAuth + API; many have official MCP servers
FinanceStripe · QuickBooks · Plaid · banking APIsOAuth + API (high-trust, governance gating mandatory)
CRM / SalesHubSpot · Salesforce · PipedriveOAuth + API
Browser / WebPlaywright · web search · scrapersAlready in IKA stack
Computer UseAnthropic Computer Use — drives any desktop app inside per-tenant ephemeral VMWrapped as Paperclip MCP plugin (see Computer Use section)

Computer Use — sandboxed desktop control

SaaS APIs cover ~70% of Operations automations. The remaining 30% live in apps with no API (Premiere, Photoshop, legacy ERPs). Anthropic Computer Use closes this gap — the agent literally sees a screen, moves a mouse, types on a keyboard. Wrapped as a Paperclip MCP plugin with per-tenant sandboxed VMs.

Capabilities

CapabilityWhat the agent can do
ScreenshotSnapshot of current desktop / window
MouseMove, click (left/right/double), drag
KeyboardType strings, press individual keys (Tab, Enter, Esc, modifiers)
Scroll, window managementSwitch apps, resize, minimize, focus
Vision-grounded reasoningClaude reads the screen at every step (multi-modal API)

Architecture

Credential model

Credential broker on the host, NOT clipboard inside the VM. The browser inside the VM talks to a host-side localhost proxy; the proxy injects the auth header for known domains and never exposes the secret to the VM process. For non-HTTP apps (Premiere license server, Photoshop activation, legacy thick-client logins), an OS-level keychain is mounted read-only into the VM with per-app entitlements. Vault holds underlying secrets encrypted. Clipboard- and autofill-based delivery are explicitly forbidden.

Governance — Computer Use + LLM council are OPTIONAL, default OFF

Both features are OPTIONAL in Settings → Governance, default OFF per IKA. Admin must explicitly enable each. Settings page surfaces a running monthly cost projection if either is enabled (Computer Use ≈ 10× normal text-turn cost; council ≈ 3× normal cost).

Vision cost optimization

Schema

Token economics — 6-layer optimization stack

#LayerWhat it optimizesEst. reduction
L1Anthropic Prompt CachingCached prefix tokens at 90% off30–50% per call
L2LiteLLM proxy + semantic cache + smart routingCache near-identical queries; route low-stakes to Haiku. Every LLM call routes through it from day 1 even at 0% cache hit, so vendor switching is one config flip.20–40% (depends on cache hit rate + Haiku-suitable fraction)
L3RTK shell-output filterFilters / dedupes / truncates noisy shell-command output BEFORE it enters the LLM context60–90% on shell output
L4Anthropic Message Batches50% discount on non-urgent batched calls (24-hour SLA). Dream-cycle uses this by default.50% on the batched portion
L5Pattern cache for known intentsDeterministic responses for known query patterns — bypass the LLM entirely~95% off when matched
L6Graphify (code-graph)Graph over codebase; agents query graph nodes + neighborhood instead of grep/dump~71.5× on codebase Q&A (Graphify's documented number)

Combined target: 50–70% reduction on monthly token spend vs naive (L1–L5), plus multiplicative reduction on codebase-touching queries from L6. Hard cap: K=8 retrieved chunks per agent turn, server-side enforced. Thoughts TTL'd 24h then summarized; never feed back into agent context without explicit retrieval (per-IKA toggle default OFF).

IKA Lab

IKA Lab is the experimental BI shell — Mats's prototype sandbox, served at main.ika.ai/lab/. Drag-drop layouts, magic-palette color wheel, lights, particle effects, and other unstable experiments live here before any of them get promoted into the main shell.

It is not a release target and not part of the v0 build plan; it is a parallel canvas. Patterns that earn their keep get ported to the React Operations shell during Phase 1 / Phase 2.

License inventory

Color coding: safe permissive · notice attribution / acceptable copyleft · risk unverified / commercial.

Backbone

ComponentLicenseStatus
Paperclip (forked → ika-operations)MITSafe
Anthropic Claude APIProprietary SaaSNotice — paid usage; per-IKA budgets
Postgres + pgvector + ltreePostgreSQL License (BSD-style)Safe
RedisBSD-3 (≤ 7.2) / RSALv2 + SSPL (7.4+)Pin to ≤ 7.2 OR Valkey (BSD-3 fork)
SeaweedFS (S3-compat document store)Apache-2.0Safe — replaces MinIO
nginx / Cloudflare TunnelBSD-2 / Proprietary SaaSSafe / Notice

Frontend

LibraryLicenseStatus
React · Vite · react-three-fiber · Three.jsMITSafe
BlockNoteMPL-2.0Notice — file-level copyleft, OK as dep
@fullcalendar/react · gantt-task-react · @uppy/react + CompanionMITSafe
@use-gesture/react · Zustand · date-fnsMITSafe
PlaywrightApache-2.0Safe

Token-optimizer stack

LayerComponentLicense
L1 / L4Anthropic Prompt Caching / Message BatchesNative API (free)
L2LiteLLMApache-2.0 / MIT
L3RTKApache-2.0
L5Pattern cache (IKA-bespoke)Our code
L6GraphifyMIT

Lifted-from-others code

SourceWhat we liftLicense
gstackPrompt-injection ML classifier (22MB) + canary token format · OWASP/STRIDE prompt templates (opportunistic)MIT — vendored under /vendored/gstack/
karpathy/llm-councilMulti-vendor council fan-out + reconciliationVerify license before vendoring
garrytan/gbrain (six lifts)Typed-link extraction · RRF fusion · backlink boosting · compiled-truth schema · dream-cycle · skillifyMIT
NousResearch/hermes-paperclip-adapterTS adapter that runs Hermes Agent inside PaperclipMIT
plastic-labs/honchoFederated dialectic user modeling (platform.honcho_profile)MIT
agentskills.io standardOpen SKILL.md format specOpen standard
NousResearch/hermes-agent-self-evolution (v1)DSPy + GEPA evolutionary optimization (≥50 skills required first)MIT
v2 Flutter Timeline (own code)26 Dart files: anti-collider, anti-space, interpolation, priority placement (vet before lifting; v2 had bugs)Proprietary (ours)
Anthropic Computer Use reference serverSandboxed-VM control logic; wrap as Paperclip MCP pluginMIT

Programmatic video

Remotion dropped due to per-seat licensing model. Alternatives: Revideo (Apache-2.0, Remotion-shape API) · Manim (BSD, mathy/explainer videos) · raw FFmpeg pipeline (Apache-2.0 binary) · Veo / Sora API router (per-call cost, no seats).

gstack adoption

gstack is an open-source LLM-security toolkit (MIT). The full comparison vs IKA lives at main.ika.ai/gstack/; this section anchors the inventory.

What we lift: gstack #6 — the 22MB prompt-injection ML classifier + canary-token format, vendored at /vendored/gstack/. This is a v0 launch blocker for any agent that ingests external content (web, email, files). Fail-closed when unavailable.

Opportunistic lifts: OWASP/STRIDE prompt templates for red-teaming. Everything else (auth, sandboxing, rate-limits) we already cover via Firecracker + per-IKA RLS.

Hermes adoption decisions

Adopted

#AdoptPhaseEffort
H1hermes-paperclip-adapter as agent classv0~½ day
H2Honcho dialectic user modeling — federated platform.honcho_profile(user_id)v0~2 days + ½ day federation
H3FTS5-style session search via Postgres tsvector (folds into RRF retrieval)v0~1 day
H4agentskills.io standard for skill catalogv0~½ day
H5hermes-agent-self-evolution (DSPy + GEPA)v1 (≥50 skills required)~3 days when adopted

Skipped

#SkipReason
H6Replace Paperclip with HermesStack rewrite. Hermes is single-user-shaped; multi-tenant adaptation = months for no functional gain over the adapter.
H7Multi-platform messaging gateway (Telegram / WhatsApp / Slack / etc. as user↔IKA chat surface)All user↔IKA chat is through the IKA app or web only. Per-neuron Slack/Email integrations as agent tools remain in scope; user-facing chat surface does not.
H8Daytona / Modal serverless terminal backendOverlaps Computer Use + Firecracker. Switching abandons credential-broker design + signed-skill isolation pairing.
H9Atropos RL / trajectory compressionOut of scope until we train our own model.
H10Hermes voice-memo transcriptionIKA voice already shipped.

Karpathy adoption

Andrej Karpathy's open-source pattern catalog. Full analysis at main.ika.ai/karpathy/.

What we adopt: llm-council — multi-vendor council fan-out + reconciliation, used as our second-opinion governance middleware on high-stakes agent decisions (irreversible writes, external sends, financial actions). License verify pending before vendoring.

Everything else (nanoGPT, micrograd, LLM101) is reference reading, not lifted code.

Odysseus adoption

Odysseus is a self-hosted, privacy-first AI workspace (MIT, Python + FastAPI). Opposite posture from IKA — they self-host model weights (vLLM/llama.cpp/Ollama); we use Anthropic. Despite the posture gap, two patterns lift cleanly. Full analysis at main.ika.ai/odysseus/.

Adopted (greenlit by Mats 2026-06-01)

#AdoptPhaseEffort
O1Deep Research loop (plan → search → synthesize → reflect, ported from Alibaba DeepResearch). Core IKA Concierge capability — Pro and Enterprise both; sits above the classifier gate as a stakes-triggered escalation in the Conversation Surface. Output writes to Artifact entity with a "convert to Document" affordance for further editing. Pipes citations to assessments table. Per-IKA cost cap (same budget primitive as the rest of the token stack — no separate tier policy).v0~2 days (skeleton + assessments wiring + budget governance + UX)
O2Cookbook decision-table pattern — single cookbook.pick(request) entrypoint collapsing the v17 threshold table, gstack #3 second-opinion gate, and the 6-layer token stack into one routing decision per request. Same shape as Odysseus's VRAM-aware fitter, different inputs (tier + budget + SLO instead of VRAM).v0 (refactor)~½ day

Watched (defer decision)

#WatchReason
O3Odysseus Memory skill-evolution loop (skills mutate based on invocation outcomes)1-hour code-walk before specing v1 skill-evolution. Storage layer (ChromaDB) skipped — we're on pgvector + tsvector RRF.

Skipped

#SkipReason
O4OpenCode agent runtime as alt to Hermes-paperclip-adapterMats 2026-06-01: Hermes for now. No v1 bench.
O5vLLM / llama.cpp / Ollama model servingPosture — we use Anthropic. O6ChromaDB vector storeAlready on pgvector (schema-per-IKA + RLS). O7SearXNG web search, IMAP/SMTP email client, CalDAV calendar, multi-tab markdown editor, blind model comparison, image editing, file upload, 2FA layer, hardware GPU passthrough, native installAll map to per-neuron integrations / first-class entities / managed-platform layer in IKA — not built-in apps.

Concierge — adopted from ECC

ECC (affaan-m/ECC, MIT, v2.0.0-rc.1) is a harness-native operator system for AI coding agents — 64 agents, 261 skills, ~25 lifecycle hooks, a continuous-learning subsystem. The 261-skill catalog itself is coding-vertical and out of scope for IKA Concierge, but the primitives underneath ride straight onto our existing per-neuron Skills / Commands / Plugins entities. Full analysis at main.ika.ai/ecc/.

Three highest-leverage adopts

#AdoptWhyEffort
E4Instincts — atomic, confidence-weighted (0.3–0.9), domain-tagged, evidence-backed learned behaviors with a scope ladder (neuron → ika → global) and a promotion rule (seen in 2+ scopes → promote). Sits between Notes (raw) and Skills (formal) on the formality axis, and between assessments-about-the-world (gbrain lift #4) and skills on the self/other axis.Highest-leverage primitive in the repo. IKA has nowhere to store claims about IKA's own behavior today; the dream-cycle observer can write instincts on the cadence we already pay for, without per-turn background-Haiku cost.~3d
E1Hook profile env-var — IKA_HOOK_PROFILE=minimal|standard|strict + IKA_DISABLED_HOOKS=…. Add a min_profile column to skill_hooks (v25.12) so a misbehaving hook can be turned down at runtime instead of requiring a migration.~50 lines of plumbing for a graceful-degradation kill-switch on the hook pipeline we just shipped.~½d
E3Context-budget audit skill — scans per-neuron Skills / Commands / Plugins / Integrations, estimates token overhead (words × 1.3), classifies Always / Sometimes / Rarely needed, flags bloat patterns, emits a savings report. Ships as IKA-curated/context-budget + /context-budget command, with a MyPanel chip.Once we have 30+ skills × 12+ MCPs per IKA, "why is the Conversation Surface slow?" becomes unanswerable without instrumentation. Builds the answer-surface before the question arrives.~1d

Four more adopts (E2 fact-force gate on first write-per-file · E5 in-conversation cost/context monitor · E6 Brief-as-markdown for cross-channel handoff · E7 per-Automation write_scope_path freeze) detailed at /ecc/. Skipped: the 261-skill catalog · multi-harness manifest translation · ecc2/ Rust control-plane · NPM distribution · legacy commands shim · Tkinter dashboard · AgentShield. Reasoning at /ecc/.

Knowledge graph adoption — six gbrain lifts

Implemented on our own schema-per-IKA Postgres + ltree + pgvector. Total adopt-cost ~9.5 days. knowledge-graph (gbrain lifts, user content) is distinct from code-graph (Graphify, codebase, L6).

#LiftAxisEffort
1Typed-link extraction without LLM calls — deterministic markdown parser detects attended/works_at/reports_to/blocks/mentions via regex + grammar. Zero prompt-injection surface. Saves ~$30–120/mo/IKA at active scale.COST~2d
2RRF hybrid search fusion — Reciprocal Rank Fusion of pgvector + tsvector results (score = Σ 1/(k+rank), k=60). ~50 lines in Paperclip retrieval handler.RECALL~1d
3Backlink-boosted ranking — multiply retrieval score by log(1 + backlink_count). Free signal — graph already exists from lift #1.SIGNAL~½d
4Compiled-truth schema — two-tier storage: events (raw timeline) vs assessments (curated, high-trust statements). Retrieval prefers assessments; falls back to events.DISCIPLINE~1d
5Nightly dream-cycle as Paperclip heartbeat — per-IKA cron walks new events and writes/audits assessments + enforces backlinks + flags orphans. Cap 200 events/run, prioritized by typed-link density. Haiku for assessment-writer; Sonnet for citation-audit. Layer 4 Message Batches by default. Per-IKA budget separate from interactive.SELF-HEALING~3d
6Skillify pipeline — 10-step checklist converts a one-off agent fix into a reusable, tested skill. Pairs with skill-creator meta-skill.COMPOUNDING~2d

Security baseline

Legal posture

RequiredAction
Privacy policy publishedDraft GDPR/LGPD-compliant privacy policy; link from every tenant's footer + login.
Documented data-handling mapOne-page customer-facing data-flow diagram.
Right to deletePer-IKA "Delete my IKA" flow with 30-day SLA. NO data-export feature — product surface never offers an export button. For EU tenants where GDPR Art.20 portability is legally required, evaluate the minimum legally-mandated shape at v1, separate from any convenience UX.
Cookie/tracking consentMinimal consent banner before any analytics fires; remember choice per tenant.
Data residencyPer-IKA "data residency" setting pins LiteLLM router to in-region providers (Bedrock EU / Vertex europe-west / Anthropic EU). Extend to platform.people + platform.honcho_profile + platform.conversation_*.

Security headers

HeaderRecommended
Content-Security-PolicyRestrict script/img/connect-src to self + known CDNs.
Strict-Transport-Securitymax-age=31536000; includeSubDomains.
X-Frame-OptionsSAMEORIGIN.
X-Content-Type-Optionsnosniff.
Referrer-Policystrict-origin-when-cross-origin.
Permissions-PolicyDisable unused browser features.

Prompt-injection defense

22MB classifier vendored from gstack. Launch blocker for any agent ingesting external content. Policy:

JWT delivery

JWT moved off URL paths everywhere (HTTP + WS). WS-ticket exchange: browser POSTs /api/v1/ws/ticket over authenticated HTTPS → server returns 30-second-TTL nonce → WS connects with nonce in first frame → server exchanges nonce for JWT-derived session and discards it. JWT itself in HttpOnly Secure cookie scoped to *.ika.ai with SameSite=Lax. Never in URL path, query string, or referer.

Encryption at rest

StorageAction
Postgres (schema-per-IKA cluster)TDE on managed deploy OR LUKS on self-host.
SeaweedFS document storeSSE-KMS with per-tenant KMS key (one per IKA, matches schema-per-IKA). Keys in HashiCorp Vault. Annual rotation.
Backupsage -R recipients.txt on every snapshot before write. Quarterly key rotation.
Computer Use recordingsSame SSE-KMS as documents.
In-transitTLS 1.2+ on all endpoints (Cloudflare-terminated). HSTS preload.

RLS + ACL — defense in depth

Postgres Row-Level Security policies as the floor under every query. ACL on top in the application layer. Property-based fuzzing in CI (random user, random entity → assert 403 unless ACL grants).

Per-IKA governance defaults — OFF

Disaster recovery

Federated People — operational appendix

People are federated single records living in platform.people. Per-IKA visibility via platform.ika_people linking rows. RLS-enforced.

PathDetail
(a) MigrationOne-time merge: for every IKA's people table, INSERT into platform.people with dedup heuristic = email match (canonical primary) + fallback (name + phone) fuzzy match with Levenshtein-≤2 on name AND exact phone match. Collisions land in a manual-review queue. Per-IKA ika_people linking row is created with the resolved platform_person_id. Migration is idempotent.
(b) RLS policyCREATE POLICY platform_people_visibility ON platform.people FOR SELECT USING (EXISTS (SELECT 1 FROM platform.ika_people ip JOIN platform.user_ikas ui ON ui.ika_id = ip.ika_id WHERE ip.platform_person_id = platform.people.person_id AND ui.user_id = current_setting('app.current_user_id')::uuid));
(c) Backup atomicitySingle backup job covers platform schema + every ika_* schema atomically (pg_dump --schema=platform --schema='ika_*' in one transaction or via pg_basebackup). Restore replays the same set; partial-restore is forbidden (cross-schema FKs would dangle).
(d) DR runbookAfter restore, run consistency check that every ika_people.platform_person_id resolves to an existing platform.people row; orphans surface in Builder DR-status panel for manual reconciliation.

Deletion + federation matrix

ActionWhat gets deletedWhat stays
Delete IKA-AIKA-A's schema (ika_a.*) including its ika_people linking rows; per-IKA conversation messages scoped via focused_ika_id get a tombstone marker; per-IKA artifacts.platform.people rows that other IKAs still reference; platform.honcho_profile for the user; the system-wide conversation thread.
Person becomes orphaned (last ika_people link removed)Soft-delete of platform.people row with 30-day grace. Recoverable if user re-adds the person to any IKA inside the grace window.Audit log entries kept for legal-retention; redacted on user-initiated full-account-delete.
GDPR Art.17 erasureHard-delete every ika_* schema for that user; hard-delete platform.honcho_profile(user_id); hard-delete platform.conversation_* rows for that user; hard-delete orphaned platform.people rows.Anonymized aggregates for ops + legal retention only.

System-wide conversations

platform.conversation_threads + platform.conversation_messages + platform.conversation_briefings all live in platform, NOT per-IKA. One thread per user across all their IKAs. Pane scopes context per-turn to the in-focus IKA (recorded as focused_ika_id on each message), but the THREAD is single + global. Briefings recompute downward — 4 per user, not 4×N.

SeaweedFS encryption posture

Top-of-window IKA switcher chrome

Icon row at the top of the window, drag-rearrangeable, persistent per user. Each IKA renders as an icon (color + initial). Active IKA gets a ring. "+" at the end opens the new-IKA flow. Hover = tooltip with full IKA name.

┌─────────────────────────────────────────────────────────────────────────┐
│ row 0  [IKA-1] [IKA-2] [IKA-3] [+]                       (IKA chrome)  │  ← IKA switcher (icon strip, NOT Builder)
├─────────────────────────────────────────────────────────────────────────┤
│ row 1  ( BI | Operations )                                              │  ← BI ↔ Operations toggle
├─────────────────────────────────────────────────────────────────────────┤
│ row 2  [global search ........................]  [voice]  [chat-icon●] │  ← global search + voice + chat icon (unread count from briefings)
├──────────────────────────────────────────────────────────┬──────────────┤
│                                                          │              │
│              ACTIVE SHELL BODY (BI or Ops)               │  Builder     │  ← Builder feed = right-side panel sibling
│                                                          │  feed        │
│                                                          │  (admin-only)│
└──────────────────────────────────────────────────────────┴──────────────┘

IKA switcher includes shared IKAs

Lists user's own IKAs (business + personal), then a divider, then shared IKAs (with shared-by badges).

Post-v1 capabilities (deferred)

Items captured here so the spec doesn't lose them, with the explicit understanding that they ship after v1. Not in any of the 8 v0 sprints. Promoted to a real sprint plan only once v1 is feature-complete and production-stable.

CapabilityShapeEffort estimateWhy deferred
IKA-as-meeting-bot (native)Calendar-invite-driven (ika@<tenant>.ika.ai as attendee). Computer Use bot driver in v0 of the capability (reuses our existing Computer Use infra, no new SDK lock-in). Native SDK paths per platform (Zoom Meeting SDK, Microsoft Graph + Teams Bot Framework, Google Meet REST + headless) in v1 of the capability, unified behind a meeting_bot abstraction routed by platform. Capture pipeline: audio → Whisper-large-v3 (in-region equivalent if the tenant has R5 data residency) → speaker diarization → structured JSON → platform.meeting_transcripts + recording in SeaweedFS under meetings/<ika_id>/<date>/<meeting_id>.mp4 with SSE-KMS per-tenant key (M8). Dream-cycle reads new rows + updates Person + Topic pages identical shape to gbrain pipeline. No third-party SaaS (explicitly NOT Granola or Fireflies — Mats's call 2026-04-29). Speaker identity links to federated platform.people records (Q4) so there's no fuzzy reconciliation between someone else's speaker IDs and ours.~3 days for the Computer Use shape; ~1 week for the native-SDK shape with Zoom + Meet + Teams. Full feature ~1.5 weeks at swarm pace.v1 already has a long external-clock list (pen-test, lawyer review, EU residency provisioning). Meeting-bot is a real engineering build with calendar OAuth + audio pipeline + diarization + per-platform driver — fits cleanly post-v1 once those clocks have run. Per Mats 2026-04-29.

See /secondbrain for the analysis that surfaced this lift. The other two lifts from that analysis (orphan-in-brief, pre-query-dedup) ship as part of v0 / Sprint 4 — they're cheap and reuse existing dream-cycle + RRF infra. Only the meeting bot is post-v1.

Concrete next steps

Sprint-based delivery, no blocking. While building, the swarm never stops to wait on Mats — except at sprint review boundaries. Within a sprint, agents proceed; if a question arises, they make the best call (with v22 tentative-placement / "does this belong here?" badging) and surface it for Mats's later review. Sprint cadence: ~1 day swarm work + ~½ day Mats review buffer (default 1.5d sprint). Narrow features can run as ½-day swarm + same-day review.

Sprint progress bar (placeholder — live version ships into Builder chrome + the eventual product)

S0
kickoff
awaiting-review
S1
P1-A
pending
S2
P1-B
pending
S3
P1-C
pending
S4
P1-D
pending
S5
P1-E
pending
S6
P1 final
pending
S7
P2 start
pending
S8
P2 finish
pending

Next review: Sprint 0 kickoff — awaiting Mats greenlight. Live version (in Builder chrome + product): segment fill-percentage on current sprint + countdown to expected review deadline.

Sprint plan

SprintScopeLengthStatus
0 — kickoffThe 7 v0 blockers (B1–B7) + supporting infra: gstack prompt-injection lift, Paperclip fork + schema-per-IKA + RLS + platform schema, JWT-off-URL + WS-ticket, Computer Use credential broker, Skill signing + Firecracker, encryption-at-rest + age backups + KMS, Builder host-shell role-gate.~1dawaiting-review
1 — Phase 1 part AReact+Vite+TS skeleton in <div id="ika-react-root">; Operations shell mount inside vanilla; neuron tree; drag-drop; Forms; Phases.~1.5dpending
2 — Phase 1 part BLeadership; Sharing; Search; Deep-linking; Artifacts grid; 13-cell layout completed.~1.5dpending
3 — Phase 1 part CVoice matrix v0 (create + read on tasks/events/notes; expand in waves) + IKA Conversation Surface (classifier-gate + drawer + briefings ON + Honcho federated + system-wide threads).~1.5dpending
4 — Phase 1 part D6 gbrain lifts (typed-link extraction, RRF fusion, backlink boosting, compiled-truth schema, dream-cycle, skillify) + 6-layer token stack adoption (LiteLLM at L2, Prompt Caching, RTK, Message Batches, pattern cache, Graphify).~1.5dpending
5 — Phase 1 part EOnboarding × 6 templates + prompt catalog + Skills/Integrations/Agents/Automations with unified inheritance + MyPanel pin + Recycling Bin.~1dpending
6 — Phase 1 finalIntegration + smoke test pass (E2E Playwright + a real prosumer walkthrough) + bug-fix loops.~1dpending
7 — Phase 2 startVanilla BI rewrite — re-implement charts, drill-downs, query overlay, palette, modal analysis.~1.5dpending
8 — Phase 2 finishThree.js icosahedron via react-three-fiber inside the same React app + visual regression vs frozen msp.ika.ai.~1dpending

Total: 8 sprints, ~10–11 calendar days. Matches the v0 5–8d swarm-time + Mats-review-buffer estimate.

Open questions

  1. Greenlight Phase 1. Greenlight the swarm v0 build + sequential two-phase plan (Phase 1 React Operations inside vanilla, Phase 2 vanilla BI → React rewrite — both Opus + Codex sequentially on same focus)?
  2. "First dynamic Operations tenant" slot. Who/what fills it? Three deadlines (B6 encryption-at-rest, R6 DR runbook, R7 Computer Use lawyer review) anchor to "before first dynamic tenant" — currently TBD.

Glossary

TermDefinition
IKAThe product. An AI-first management surface for a company or a life context. A user can own multiple IKAs; each is isolated by Postgres schema + RLS. v3 is the current generation.
NeuronThe fractal unit of organization inside an IKA. Top-level neurons are departments. Soft cap depth 6.
Sub-neuronA neuron whose parent is another neuron. Same UI primitives — fractal all the way down.
SHARED top-neuronSystem pseudo-neuron pinned at depth 0 of every user's IKA. Receives entities shared at the sub-entity scope.
MyPanelThe user's home dashboard / launch view. Renders the user's pinned entities (per-user, cross-IKA) as a 3-column grid.
Recycling BinPer-IKA chrome surface listing soft-deleted entities. Auto-purge after 30 days (configurable). Cascading restore.
LeaderThe single human accountable for delivery of a project / task / event / form / neuron. Distinct from assignee.
AssigneeThe human or agent doing the work. Many possible per entity; not the leader.
OwnerThe user who created an entity, or who holds the IKA. The IKA owner has Full ACL by default.
code-graph (Graphify)Graph over the codebase, scoped per repo. L6 of the token stack.
knowledge-graph (gbrain)Graph over user content (notes, events, projects, decisions), scoped per IKA. Lives in each IKA's Postgres schema with ltree + pgvector.
BuilderThe agent-driver overlay (top bar + side panel + feed + tasks + Q&A + snapshots). Admin-only. Vanilla, host-agnostic, sandboxed iframe with strict CSP + DOMPurify.
Builder bundleShipped JS+CSS payload at /builder.js, version-pinned by snapshot.
Host shellThe IKA app HTML page into which the Builder bundle is conditionally injected at server-render time based on the user's role.
Phase 1Both Opus + Codex focused on building the React Operations shell INSIDE the existing vanilla shell on main.ika.ai — file-by-file hybrid mount via <div id="ika-react-root">. ~3–4 swarm-days.
Phase 2After Phase 1 ships, both accounts focused on the vanilla BI → React rewrite inside the same React app. ~2–3 swarm-days. End state: one React app, no legacy vanilla.
HonchoPlastic Labs's dialectic user-modeling microservice. Lifted to platform.honcho_profile(user_id) with optional per-IKA overlays — one canonical user-self model across all the user's IKAs.
Conversation threadOne thread per user, system-wide across all their IKAs. Lives in platform.conversation_threads + platform.conversation_messages. Pane scopes context per-turn to in-focus IKA via focused_ika_id.
Computer UseAnthropic's sandboxed desktop-control capability. OPTIONAL, default OFF per IKA in Settings → Governance.
LLM councilMulti-vendor second-opinion middleware. OPTIONAL, default OFF, ~3× normal cost; user invokes per-turn with "/council" prefix when enabled.
Second opinionSingle-vendor (Codex) review of a high-stakes agent plan. Triggered by money / identity / external-recipient policies. OFF by default; admin opts in.
Dream-cyclePer-IKA nightly Paperclip heartbeat that walks new events and writes/audits assessments + enforces backlinks + flags orphans. Cap 200 events/run; Haiku for assessment-writer, Sonnet for citation-audit; Layer 4 Message Batches; per-IKA budget separate from interactive.
Skillify10-step pipeline that converts a one-off agent fix into a reusable, tested skill. gbrain lift #6.
RRFReciprocal Rank Fusion — score = Σ 1/(k+rank), k=60 — combines pgvector and tsvector retrieval. gbrain lift #2.
ltree / pgvectorPostgres extensions for hierarchical paths and vector embeddings.
RLSRow-Level Security — Postgres feature that enforces per-row access policies inside the database. The floor under every query.
PhasesFirst-class structure inside a project: Initiation / Definition / Research / Planning / Design / Development / Implementation / Follow-up + custom.
PriorityHigh / Medium / Low chip on every task / project / event. Drives default sort + visual weighting + Timeline placement.
FlowstateGLOBAL user-level metric of focused time across all the user's IKAs. Aggregated from Pomodoro sessions. Rendered in chrome.
Pomodoro25-minute focus + 5-minute break loop bound to a task. Sessions feed the global Flowstate metric.
FormsTwo-tier (Template + Submission) typed data-collection primitive. Field types: Date / Dropdown / Checkbox / Text / Title / Paragraph.
ArtifactsOn-the-fly created HTML pages owned by a neuron. 13th first-class entity.
IntegrationsPer-neuron MCP/API connections. Inheritable from parent neuron with override.
SkillsCapability bundles installable per-neuron. Every skill row signed (sha256 + ed25519) and license-required; runs in Firecracker.
AutomationsRecurring agent-driven workflows scoped to a neuron.
EventsTime-bounded items with start/end + invitees.
NotesBlock-editor (BlockNote) rich-text content attached to a neuron / project / task / event / person.
DocumentsFile-bytes attached via Uppy + Companion. Stored in SeaweedFS.
PeopleFederated human records living in platform.people; per-IKA visibility via ika_people linking rows. One canonical record per real human across all your IKAs.
AgentsPaperclip-managed AI workers bound to a neuron (or a task). Can be assignees but never leaders.
ProjectsContainers for tasks. Have phases, leader, priority, status, dual radial.
TasksThe unit of work. Recursive (sub-tasks).
OccurrencesMaterialized instances of a recurring task / event / form (iCalendar RRULE). Materialized lazily.
Deep-linkStable URL grammar that addresses any entity inside the fractal. Layer 1 (BI) + Layer 2 (Operations).
Layer 1 (BI)The outer shell — charts, drill-downs, query overlay, palette, modal analysis, neuron icosahedron at BI level.
Layer 2 (Operations)The inner shell — neuron tree, entity lists, drag-drop matrix, plugins, forms, phases, search, sharing.
msp / main / inturSubdomain identifiers. msp = frozen client-presentation. main = active build target. intur = sister product.
Prompt-injection classifier22MB ML model vendored from gstack #6. Launch blocker. Fail-closed when unavailable.
MCPModel Context Protocol — the integration shape we use for every external service.
RTKShell-output filter from /tokens. L3 of the token stack.
LiteLLMVendor-agnostic LLM proxy + router + cache. L2 of the token stack. Every LLM call routes through it from day 1.
Message BatchesAnthropic Message Batches API — 50% off for non-user-blocking workloads. L4 of the token stack.
Prompt CachingAnthropic Prompt Caching — re-use cached prefix tokens at large discount. L1 of the token stack.
SHAREDPseudo-neuron rendered at depth 0 by joining the user's shares rows with scope = sub_entity. Receivers see only the shared entity + its descendants — no parent leakage.
OPS_MAPPer-IKA item map (operations_item_map.json) loaded into a global on app boot. Indexes every entity for <5ms voice resolution.
SPINEPer-user cross-IKA spine (user_ika_spine.json) loaded once at login. Indexes IKAs + top-neurons + favorites + recent + people_federation. Resolves cross-IKA voice commands without context-switching.
Tentative-placementVoice utterance → entity persisted immediately at IKA's best guess with a tentative flag → passive confirmation toast → if dismissed, badge stays until reviewed. Voice input never lost.

Changelog