Reaktor DocsStart hereClaude

Start here · Claude

Strategic Roadmap

Product and platform roadmap covering phases, modules, moats, risks, and success metrics.

Use whenUse for strategic framing and product sequencing.
SourceClaude
Route/docs/reaktor-workbench-roadmap

From framework to the most comprehensive app development control panel — the plan to get there

1. Current State — What Exists Today

Framework (Production-Ready)

reaktor-graph-portCompleteTyped ports, edges, visitors, selectors, traversers
reaktor-graphComplete6 node types, lifecycle, autoWire, navigation, DI, services
reaktor-flowCompleteCompose graph canvas, blueprint layout, minimap, legend, regions
compose-flowCompleteCMP port of React Flow — pan, zoom, drag, handles
reaktor-uiCompleteComposeNode, ComposeRenderer, UI primitives
reaktor-ioCompleteNetwork + serialization, 6 transport modes
reaktor-dbCompleteSQLite runtime, 5-tier data model
reaktor-authCompleteAuth services
reaktor-coreCompleteFoundation layer

Workbench (Partial)

Graph editor paneDoneReaktorGraphEditor in engine module
Tree panelDoneRecursive graph/node tree
Node inspectorDoneGeneric — not type-aware yet
Live previewDoneScreenPreviewPanel with Content()
Semantics inspectorDone2300+ line CompositionData inspector
Graph document exportDoneJSON for LLM consumption
5-mode shellWIPWeb prototype done, Compose port needed
DevTools / Deploy / InsightsNot startedWeb prototype only
Command paletteNot startedWeb prototype only
Drawer systemNot startedWeb prototype only
Command pattern + LLMNot startedDesign only

The Web Prototype (reaktor.build)

A 6,100-line React prototype that serves as the specification for the real tool. 5 screens, 13 type-aware inspectors, command palette, drawer with 7 tabs, deployment topology, analytics dashboard. Every pixel of this prototype defines what the Compose Multiplatform tool must become. It is live at reaktor.build alongside these analysis documents.

2. Three Strategic Pillars

I

The Graph Is Everything

The typed directed graph is the single source of truth. Every screen, every inspector, every AI interaction, every deployment decision reads from or writes to the graph. The GraphManifest is generated at compile time. The live Graph runtime emits PortInvocationEvents. The workbench is just the best view of this graph.

Implication: Every new feature starts with "what does this add to the graph?" If it doesn't touch the graph, it doesn't belong in Reaktor.

II

Commands, Not Code

Users never write code inside Reaktor. They produce typed GraphCommand objects (AddNode, ConnectPorts, SetProperty) through visual interactions. Commands are previewed, batched, and sent to an LLM for code generation. Code editing happens in IntelliJ/VS Code. This is the fundamental difference from every competitor.

Implication: The command schema is the API contract with AI. It must be rich enough to express any architectural change and stable enough to be a reliable interface.

III

Every Persona, One Graph

The same graph serves the developer (edit + trace), the architect (visualize + analyze), the PM (understand + measure), the QA engineer (test impact + blast radius), the DevOps (deploy + monitor), and the analyst (metrics + funnels). Different views, same truth.

Implication: Every screen must be useful to at least 2 personas. Role-based access controls what you can modify, not what you can see.

P1
The Living Graph
Make the graph real, live, and navigable — the foundation everything else builds on
Weeks 0-8 • Critical path
If P1 ships and nothing else does, you still have something no competitor has: a live, typed, navigable architectural graph of a running application, with a professional visual editor and IDE bridge.

1.1 GraphManifest Generation

What: KSP (Kotlin Symbol Processing) plugin that scans the codebase at compile time and generates a GraphManifest.json containing all nodes, edges, ports, routes, metadata, source locations, and module boundaries.

Why: This is the bridge between the code and the visual tool. Without it, the graph is manually maintained. With it, the graph is always in sync with reality.

Deliverable: reaktor-graph-ksp module. Run ./gradlew :app:kspKotlin → generates build/graph-manifest.json with every node, edge, port, route, and source file location in the BestBuds app.

Node scanner
Find all classes extending Node subtypes, extract type, name, module, source file, line number
reaktor-graph-ksp
Port scanner
Find all provides()/consumes() delegate declarations, extract Key, Type, name
reaktor-graph-ksp
Edge resolver
Resolve port connections from autoWire() calls, manual connect() calls, and Graph builder DSLs
reaktor-graph-ksp
Route mapper
Extract navigation routes from RouteNode patterns, build route tree
reaktor-graph-ksp
Manifest serializer
Serialize to JSON + generate Kotlin data classes for type-safe access at runtime
reaktor-graph-ksp

1.2 reaktor-flow Stabilization

What: Close the remaining issues identified in the reaktor-flow analysis. Ensure edge rendering, node selection events, kind filtering, and zoom controls all work reliably.

Deliverable: All 10 GraphFlowIntegrationTest tests pass. Manual verification in Desktop app shows fully interactive graph editing with selection → inspector wiring.

1.3 Workbench Shell (5-mode)

What: Extend ReaktorWorkbench from 2 modes (Graph/App) to 5 modes (Graph/Run/DevTools/Deploy/Insights). Add mode toolbar, keyboard shortcuts (Cmd+1-5), responsive panel collapse.

Deliverable: WorkbenchState ViewModel in commonMain. All 5 modes accessible via toolbar and keyboard. Graph screen is fully functional (powered by reaktor-flow). Other 4 screens show placeholder content with correct layout.

1.4 IDE Bridge v1

What: "Open in IDE" buttons throughout the workbench. Click a node → open its source file in IntelliJ/VS Code at the exact line.

Deliverable: ProcessBuilder("idea", "--line", lineNum, filePath) on Desktop. jetbrains:// and vscode:// URI schemes on Web. Every entity with a source field in the manifest gets an "Open in IDE" action.

P1 Exit Criteria

  • BestBuds app compiles and generates a GraphManifest.json with all nodes, edges, ports, routes
  • Reaktor Desktop loads the manifest and renders the full graph with blueprint layout
  • Clicking a node selects it, shows info in the inspector panel, and "Open in IDE" opens the file
  • 5 mode tabs are visible and keyboard-navigable
  • Graph screen is fully interactive (pan, zoom, select, filter by kind)
P2
The Control Panel
Build all 5 screens, the inspector system, and the drawer — the full visual experience
Weeks 8-16 • High priority

2.1 Type-Aware Inspector System

What: Replace the generic NodeDetailPanel with a type-dispatching system that renders specialized inspectors for each of the 8 node types + edge types. Port the 13 inspector bodies from the web prototype.

InspectorEntity TypeKey Sections
RouteInspectorRouteNodeRoute pattern, attached screens, trace sparkline, navigation targets
ScreenInspectorComposeNode (screen)Live preview thumbnail, crash rate, session count, components list
UiInspectorComposeNode (element)Props editor, click action chain, design overlay dimensions
ContainerInspectorContainerNodeChild graphs, active graph, navigation targets, tab/nav config
ActionInspectorControllerNodeFunction signature, downstream chain, invocation count
ServiceInspectorServiceNodeEndpoints, transport mode, p95, error rate, interceptor chain
EdgeInspectorEdge entitiesLatency histogram, deploy target, cert status, endpoint URL
DbInspectorDB entitiesSchema preview, row count, query performance, tier (T0-T4)
ReleaseInspectorRelease entitiesCI steps, artifacts, promote CTA, rollback history

Each inspector follows the pattern: Header (type pill + name + source) → Section tabs (scroll-linked) → Sections (overview, metrics, connections, source, actions) → Footer actions (Open in Graph / IDE / Follow chain).

2.2 Run Screen

What: WYSIWYG preview with device frame. Extend existing ScreenPreviewPanel with DeviceFrame composable (phone/tablet/desktop chrome), bidirectional click-to-inspect via ReaktorComposeSemanticsInspector, and FloatingGraphLink card connecting selected UI element to its graph entity.

Unique advantage: The semantics inspector reads live CompositionData — no other tool can do this. You literally click a button in the running app and see its full action chain through the graph.

2.3 DevTools Screen

What: Causal trace waterfall. Collect PortInvocationEvents from the running graph and display as a Chrome DevTools-style trace rail. Each span shows entity type, name, duration bar, and is clickable to navigate to the graph node.

Data source: PortInvocationEvent listeners on the live graph. Initially mock data from the manifest; real events once the app is running in the preview panel.

Blast radius: Use BreadthFirstTraverser with ConnectivitySelector to compute N-hop blast radius from selected entity. Show entity count, module count, expandable list.

2.4 Deploy Screen

What: Topology view showing all deployment targets extracted from the graph's deploys edges. Partitioned by platform (Cloudflare Workers, D1, R2, KV, Queue, App Stores, JVM Server). CI pipeline visualization. Environment switcher (Local/Staging/Production).

Data source P2: Static topology from GraphManifest. CI status from mock data. Real integrations come in P4.

2.5 Insights Screen

What: Analytics dashboard. Timeline chart with deploy markers. Route × metric heatmap. Metric summary cards (active users, response time, error rate). Time range selector (1h/24h/7d/30d).

Data source P2: Mock data. Real integrations come in P4.

2.6 Command Palette (Cmd+K)

What: Modal search across all entities, commands, and navigation targets. Fuzzy matching on name, type, module, source, tags. Arrow key navigation, Enter to select, Escape to close. ">" prefix for command mode.

Why now: This is the highest-impact single feature for making the tool feel professional. Every user (developer, PM, QA) uses search as their primary navigation.

2.7 Drawer System

What: Bottom drawer with 7 tabs: Traces, Logs, Agent, Diagnostics, Commands, Queue, CodeDiff. Resizable height. Tab switching via keyboard. The "Agent" tab is a placeholder in P2 — becomes the AI chat in P3.

P2 Exit Criteria

  • All 5 screens are fully rendered with real data from the manifest + live graph events
  • Click any entity anywhere → inspector shows the correct type-aware body
  • Cross-mode navigation works: "Open in Graph" from Run screen switches to Graph and selects the entity
  • Command palette finds any entity in the graph within 2 keystrokes
  • Drawer opens with Traces tab showing live PortInvocationEvents
  • The tool looks and feels like the web prototype at reaktor.build, but powered by real data
P3
The AI Bridge
Command pattern, LLM integration, and the agent interface — the core differentiator
Weeks 16-24 • Differentiator

3.1 GraphCommand Schema

What: The typed command hierarchy that represents every structural change to the application.

sealed interface GraphCommand {
    val id: String; val timestamp: Instant; val description: String

    data class AddNode(val type: NodeType, val name: String, val parent: String?)
    data class RemoveNode(val nodeId: String)
    data class ConnectPorts(val consumer: PortRef, val provider: PortRef)
    data class DisconnectPorts(val consumer: PortRef, val provider: PortRef)
    data class SetProperty(val entityId: String, val key: String, val value: JsonElement)
    data class CreateSubgraph(val name: String, val nodes: List<String>)
    data class MoveToContainer(val nodeId: String, val containerId: String)
    data class SetRoute(val routeId: String, val pattern: String)
    data class SetTransport(val edgeId: String, val transport: TransportMode)
    data class SetDeployTarget(val nodeId: String, val target: DeployTarget)
    data class AddInterceptor(val serviceId: String, val interceptor: InterceptorDef)
    data class SetUiProperty(val elementId: String, val prop: String, val value: JsonElement)
}

Why this matters: This is the structured protocol between the human/UI and the AI. Instead of "change the button color" → raw code, you get SetUiProperty(elementId="apple_button", prop="backgroundColor", value="#3fbf78") → the LLM knows exactly what to change, in which file, and can generate a precise diff.

3.2 Command Queue + Preview

What: The Queue drawer tab shows pending commands. Each command shows: type badge, description, affected entity, preview of what changes. Commands can be reordered, grouped into batches, or discarded. "Apply Batch" sends to LLM.

Persistence: Commands stored in reaktor-db SQLite: graph_commands(id, type, payload_json, timestamp, applied, batch_id). Full undo/redo history.

3.3 LLM Code Generation Pipeline

What: When the user clicks "Apply" on a command batch:

  1. Context assembly: Serialize command batch + ReaktorGraphDocument + relevant source files (from entity source metadata)
  2. LLM call: Send to Claude API with a system prompt describing Reaktor's conventions, node types, port patterns, and the project's coding style
  3. CodeDiff generation: Receive unified diffs per file
  4. Review UI: Show in CodeDiff drawer tab with syntax highlighting, accept/reject per hunk
  5. Apply: Write approved diffs to project via file system (Desktop) or IDE bridge (Web)
  6. Manifest regeneration: Trigger incremental rebuild of GraphManifest to reflect changes

3.4 Agent Chat Interface

What: The drawer's "Agent" tab. A Claude Code-style chat interface where the agent has full graph context via tools:

ToolDescription
read_graph()Returns the full ReaktorGraphDocument JSON
select_entity(id)Navigates to an entity in the current screen
navigate_to(mode, id)Switches screen + selects entity
push_command(cmd)Adds a GraphCommand to the queue
query_traces(entityId, n)Returns last N PortInvocationEvent traces
blast_radius(entityId, hops)Computes N-hop blast radius via graph traversal
open_in_ide(file, line)Opens file in IntelliJ/VS Code
generate_code(commands[])Sends command batch through the LLM pipeline

Conversation flow: "Add a caching layer to the AuthService" → agent reads graph, identifies AuthService and its downstream edges, generates [AddNode(type=ServiceNode, name="AuthCache"), ConnectPorts(AuthService.output, AuthCache.input), SetProperty(AuthCache, "ttl", 300)] → user reviews in Queue tab → Apply → LLM generates code → Review → Write to project.

3.5 MCP Server

What: Expose the graph as an MCP server so external tools (Cursor, Claude Code, Codex) can query and navigate it.

Why: This is the platform play. Instead of competing with AI IDEs, you feed them. A developer using Cursor can ask "what calls AuthService?" and Cursor queries Reaktor's MCP server to get the full connection graph. This makes Reaktor the architectural layer that all AI tools lack.

Endpoints: read_graph, find_entity, get_connections, get_blast_radius, get_traces, push_command

P3 Exit Criteria

  • User can click a UI element in Run screen → modify a property → see the command in Queue → Apply → LLM generates code → Review diff → Accept → code written to project
  • Agent chat can answer "what happens when the user taps Apple login?" by traversing the graph and showing the full action chain
  • Agent can generate a command batch from a natural language request
  • External tools (Cursor/Claude Code) can query the graph via MCP
  • Command history is persistent with undo/redo
P4
The Ops Layer
Connect to real infrastructure — CI/CD, monitoring, analytics, telemetry
Weeks 24-32 • High impact

4.1 CI/CD Integration

What: The Deploy screen shows live CI pipeline status from real providers.

ProviderIntegrationData
GitHub ActionsREST API via reaktor-ioWorkflow runs, step status, logs, artifacts
Cloudflare Pages/WorkersREST APIDeployment status, preview URLs, analytics
Gradle BuildLocal process + build scan APICompilation status, test results, build time

Deploy actions: "Push to Staging" triggers a real Cloudflare Workers deployment. "Promote to Production" triggers a production deploy with confirmation. Status updates stream into the drawer's Logs tab.

4.2 Telemetry Integration

What: The Insights screen shows real metrics from production infrastructure.

SourceMetricsIntegration
Cloudflare AnalyticsRequest volume, error rate, latency per workerGraphQL API
SupabaseDatabase query metrics, row counts, slow queriesManagement API
Custom telemetryApp-level events (screen views, actions, errors)PortInvocationEvent → telemetry sink
Crash reportingCrash-free rate, stack traces linked to graph entitiesSentry/Crashlytics API

Graph-linked metrics: Every metric is attached to a graph entity. "cf.workers/auth has a p95 of 340ms" links to the edge entity in the graph. Click it → see the EdgeInspector → see the trace → see the downstream impact.

4.3 Proactive Agent Monitoring

What: The agent doesn't just respond to questions — it monitors the system and surfaces anomalies. Like Codex's Automations, but graph-aware.

  • "Your p95 on /onboarding spiked 40% after deploy rc-813. The change touched AuthInteractor → AuthService. Want me to trace it?"
  • "3 new crash reports on OnboardingScreen since yesterday. All in the Apple login flow. AuthService.loginWithApple has a 12% error rate."
  • "Your d1.sessions table grew 340% this week. Want me to add TTL-based cleanup to the sessions service?"

How: Background polling of telemetry APIs + threshold alerts + graph context to explain why something changed, not just that it changed.

P4 Exit Criteria

  • Deploy screen shows real GitHub Actions pipeline status, not mock data
  • "Push to Staging" button triggers a real Cloudflare Workers deployment
  • Insights screen shows real Cloudflare Analytics data (request volume, latency, errors)
  • Agent proactively surfaces a performance regression after a deploy
  • Click a metric anomaly → navigate to the graph entity → see the trace → see what changed
P5
The Platform
Multi-persona access, web target, collaboration, and the scaffold-from-prompt experience
Weeks 32-44 • Growth

5.1 Compose Multiplatform Web Target

What: Compile reaktor-workbench (commonMain) to Kotlin/JS + Compose canvas. Deploy to Cloudflare Workers. Same codebase, same features, accessible in a browser. Replaces the current React prototype at reaktor.build.

Platform-specific (jsMain): IndexedDB for SQLite, fetch wrapper for network, vscode:///jetbrains:// URI schemes for IDE bridge, Cloudflare Worker proxy for LLM API (CORS).

5.2 Scaffold from Prompt

What: "Describe your app" → generate a full GraphManifest with nodes, edges, routes, services, screens, and deploy targets. The user sees the graph immediately, reviews it, and refines through the command pattern. Then "Apply" generates the entire project skeleton.

Why: This is Reaktor's answer to Bolt/Lovable/Emergent. But instead of a black box that produces code, you get a visible, editable graph that produces code. You understand what was generated. You can modify individual parts. You can trace it.

Flow:

Prompt
"Social app with auth, chat, profiles"
LLM
Generates GraphManifest
Graph View
User reviews architecture
Refine
Commands to adjust
Apply
Generate full project

5.3 Role-Based Views

RoleCan seeCan modifyPrimary screens
DeveloperEverythingEverything (via commands)Graph, Run, DevTools
ArchitectEverythingArchitecture commands onlyGraph, Deploy
Product ManagerGraph (read-only), Insights, Deploy statusNothing — can create tickets from entitiesInsights, Graph (read-only)
QA EngineerGraph, DevTools, RunNothing — can create bug reports from tracesDevTools, Run
DevOpsDeploy, Insights, GraphDeploy commands onlyDeploy, Insights
Marketing/AnalystInsights, Graph (simplified)NothingInsights

5.4 Team Collaboration

  • Shared graph state: Multiple users viewing the same graph, selections visible to others (like Figma cursors)
  • Command review flow: Developer creates command batch → architect reviews → approve/reject → LLM generates code
  • Entity annotations: Any user can annotate a graph entity with notes, screenshots, links. Annotations visible to all roles.
  • Activity feed: "Alice deployed v812 to production" / "Bob modified AuthService" / "Agent detected p95 spike on /chat"

P5 Exit Criteria

  • reaktor.build serves the Compose/JS build, fully functional in Chrome/Safari/Firefox
  • "Describe your app" → generates a navigable graph → user refines → Apply → full project skeleton
  • PM can log into reaktor.build, see the application graph read-only, and view analytics
  • Multiple users see each other's selections in real-time
P6
The Ecosystem
Plugin system, marketplace, enterprise features, and the self-reinforcing flywheel
Weeks 44-60 • Scale

6.1 Plugin Architecture

What: A plugin API that lets third parties add: new node types, new inspector bodies, new drawer tabs, new deploy targets, new telemetry sources, new MCP tools.

Examples:

  • Firebase plugin: Adds Firestore/RTDB node types, Firebase Analytics telemetry source, Firebase Hosting deploy target
  • AWS plugin: Adds Lambda/DynamoDB/S3 node types, CloudWatch telemetry, CDK deploy target
  • Stripe plugin: Adds Payment node type with Stripe-specific inspector showing revenue metrics
  • Sentry plugin: Adds crash reporting telemetry source, links stack traces to graph entities

6.2 Template Marketplace

What: Curated GraphManifest templates for common app patterns: social app, e-commerce, SaaS dashboard, chat app, marketplace. Each template is a pre-built graph with all nodes, edges, routes, services, and deploy targets. User selects template → sees graph → customizes via commands → Apply.

6.3 Enterprise Features

  • SSO/SAML: Enterprise auth integration
  • Audit log: Every command, every deploy, every agent interaction logged
  • Compliance view: Which entities handle PII? Which services are exposed externally? Which databases store credentials?
  • Custom deploy policies: "Production deploys require 2 approvals" enforced at the graph level
  • Self-hosted option: Run the full workbench on-prem for regulated industries

6.4 The Flywheel

Each phase compounds:

  1. The graph attracts developers (P1-P2) — "I can finally see my app's architecture"
  2. The AI bridge retains them (P3) — "I can modify the app through typed commands + AI"
  3. The ops layer makes it indispensable (P4) — "I can't work without seeing deploys and metrics in context"
  4. The platform brings the team (P5) — "My PM, QA, and DevOps all use this too"
  5. The ecosystem locks in the org (P6) — "Our custom plugins and templates are worth more than the tool itself"

By P6, switching away from Reaktor means losing: the graph (accumulated knowledge), the command history (every architectural decision), the telemetry correlations (months of data), the plugins (custom integrations), and the team workflows (PM/QA/DevOps access). The moat deepens with every month of use.

9. Module Roadmap — All 27+ Modules

LayerModuleStatusPhaseRole in Roadmap
Foundationreaktor-coreDoneBase utilities, expect/actual
reaktor-ioDoneP4Network for CI/telemetry API calls
reaktor-dbDoneP3Command history persistence
Enginereaktor-graph-portDonePort/Edge/Visitor foundation
reaktor-graphDoneRuntime graph, all node types
reaktor-graph-kspNewP1Compile-time manifest generation
reaktor-uiDoneComposeNode, renderer for preview
reaktor-authDoneAuth for cloud API connections
Toolingcompose-flowDoneCompose port of React Flow
reaktor-flowStabilizeP1Graph canvas, layout, overlays
reaktor-workbenchNewP1-P5All 5 screens, inspector, drawer, agent
reaktor-mcpNewP3MCP server exposing graph to external tools
Platformreaktor-mediaDoneMedia handling
reaktor-tactileWIPDesign system for the workbench UI itself
reaktor-analyticsNewP4Telemetry collection + correlation
Applicationsbestbuds/engineDoneP1-P2Desktop workbench entry point
bestbuds/reaktorDesktopDoneP1JVM Desktop target
bestbuds/reaktorWeb-composeNewP5Compose/JS web target

10. Persona Journeys

KMP Developer — "I need to add Apple Pay to the checkout flow"

  1. Open Reaktor Desktop. Graph screen shows the full BestBuds architecture.
  2. Cmd+K → "checkout" → selects screen:CheckoutScreen.
  3. Inspector shows: CheckoutScreen → PaymentInteractor → PaymentService → cf.workers/payment → stripe.api.
  4. Click "Ask Agent" → "Add Apple Pay as a payment method alongside Stripe".
  5. Agent reads graph, generates commands: AddNode(ServiceNode, "ApplePayService"), ConnectPorts(PaymentInteractor.output, ApplePayService.input), AddNode(EdgeNode, "apple.pay.api"), etc.
  6. Review commands in Queue tab. Approve. Agent generates CodeDiff.
  7. Review diff in CodeDiff tab. Accept. Code written to project. IntelliJ auto-refreshes.
  8. Switch to Run screen. Preview shows new Apple Pay button. Click it → trace shows the full new action chain.
  9. Switch to Deploy. CI shows tests passing. Click "Push to Staging".
  10. Switch to Insights. 30 minutes later, see Apple Pay adoption rate in the heatmap.

Product Manager — "Why is onboarding conversion dropping?"

  1. Open reaktor.build in browser (read-only PM view).
  2. Insights screen shows: onboarding funnel conversion dropped 8% after deploy v812.
  3. Click the deploy marker on the timeline → sees which entities changed in v812.
  4. Click screen:OnboardingScreen → inspector shows crash-free rate dropped to 94%.
  5. DevTools trace shows: loginWithApple action is timing out for 12% of users.
  6. PM annotates the entity: "Investigate Apple login timeout — blocking 8% conversion drop".
  7. Annotation appears in the developer's Reaktor Desktop immediately.

DevOps — "Is it safe to promote v813 to production?"

  1. Open Deploy screen. See staging environment: all CI steps passed, 3 workers updated.
  2. Click "cf.workers/auth" in topology → EdgeInspector shows: p95 on staging = 142ms (within SLA), error rate = 0.3% (below threshold).
  3. Click "Blast radius" → shows 14 entities across 6 modules affected by this deploy.
  4. Check Insights for staging metrics: all green after 2 hours of soak time.
  5. Click "Promote to Production" → confirms → production deploy starts → status streams into Logs tab.

11. Competitive Moats Over Time

PhaseWhat ShipsMoat CreatedCompetitor Gap
P1 Live navigable graph + IDE bridge Only tool that shows the full architecture of a KMP app No competitor has a typed graph. Cursor/Claude Code read code as text.
P2 5 screens + inspector + drawer Only tool where UI, logic, backend, deploy, and analytics are in one view FlutterFlow: UI only. n8n: backend only. Grafana: metrics only. All separate tools.
P3 Command pattern + LLM + MCP server Structured change protocol beats raw code diffs. MCP makes Reaktor the brain for other AI tools. Bolt/Lovable generate code but can't explain it. Claude Code generates diffs but has no architecture model.
P4 Real CI/CD + telemetry + proactive agent Only tool that correlates deploys with metrics with graph changes. Agent monitors proactively. Codex has Automations but no graph context. Grafana has dashboards but no code awareness.
P5 Multi-persona + web + scaffold-from-prompt Network effect: every persona in the org uses the same tool. Template marketplace creates switching cost. No competitor serves PM, QA, DevOps, and marketing alongside developers.
P6 Plugins + enterprise + ecosystem Custom plugins, accumulated command history, team workflows make switching impossible. n8n has plugin ecosystem ($2.5B) but only for automation. Reaktor covers the full application.

🚀 12. Go-to-Market Strategy

Phase 1-2: Developer-First (Weeks 0-16)

  • Target: KMP developers (growing community, ~100K developers by 2026)
  • Channel: Open-source the graph modules (reaktor-graph, reaktor-graph-port, reaktor-flow). The workbench is the commercial product.
  • Hook: "See your entire KMP app as a navigable graph. Click a button → trace to the database." Demo with BestBuds as the reference app.
  • Pricing: Free for individual developers. $29/mo for IDE bridge + inspector + deploy screen.

Phase 3-4: AI-Powered Development (Weeks 16-32)

  • Target: Teams adopting AI-assisted development
  • Channel: Integration announcements with Claude Code, Cursor, Codex via MCP. "The architectural layer your AI IDE is missing."
  • Hook: "Your AI generates code. Reaktor tells it what code to generate." Show command → LLM → CodeDiff pipeline.
  • Pricing: $79/mo per seat for AI features (command pattern, agent, MCP server). Usage-based for LLM API calls.

Phase 5-6: Platform for Teams (Weeks 32-60)

  • Target: Product teams (5-50 people) building production apps
  • Channel: PM/QA/DevOps access as free readers. Developers pay for edit access. Enterprise sales for large teams.
  • Hook: "One tool for your entire team — from the developer writing code to the PM reading analytics."
  • Pricing: $29/mo readers, $79/mo editors, $199/mo enterprise seats. Custom pricing for self-hosted.

13. Risks & Mitigations

RiskSeverityMitigation
Compose/JS maturity — Web target may have performance or compatibility issues High Build everything in commonMain. Test Web early in P1. React prototype remains as fallback with JSON API to the real graph runtime.
KMP market size — KMP developer community is smaller than React/Flutter Medium The graph model is framework-agnostic. P6 plugins can add React/Flutter/SwiftUI node types. KMP is the first target, not the only target.
AI coding agents commoditize everything — Claude Code / Codex make visual tools irrelevant Medium The graph is what AI agents need, not what they replace. MCP server strategy: become the architectural layer that feeds AI tools. The more AI generates code, the more you need a graph to understand what it generated.
Scope creep — 5 screens + inspector + drawer + agent + deploy + analytics is enormous High Each phase has strict exit criteria. P1 delivers standalone value. P2 delivers standalone value. No phase depends on the next one shipping. The web prototype serves as the spec — don't redesign, just implement.
GraphManifest freshness — Manifest may drift from code between compiles Medium Incremental KSP processing on file save. Gradle continuous build mode. Worst case: "Manifest stale, rebuild?" prompt in workbench.
LLM code quality — Generated code from commands may have errors Medium Every generated diff goes through review. Compile + test after apply. The agent iterates on failures (like Claude Code). The structured command gives the LLM far more context than a raw prompt.

14. Success Metrics

MetricP1 TargetP2 TargetP4 TargetP6 Target
Graph entities renderedAll BestBuds entities (38+)Any KMP appAny KMP app + infraAny framework
Time to first graph<5 min (existing app)<5 min<5 min<2 min (from prompt)
Commands applied per session5+ (useful)20+ (primary workflow)
Non-developer users001-2 per team3-5 per team
MCP queries from external tools100+/day1000+/day
Weekly active developers1 (you)5-10 (alpha testers)100+5,000+
Agent interventions accepted3+/weekDaily habit
The ultimate success metric: a developer opens Reaktor before they open their IDE. They look at the graph to understand what to change, use the agent to generate the change, review it in the CodeDiff tab, and only switch to IntelliJ when they need to hand-tune something the AI got wrong. The IDE becomes the fallback, not the primary tool.
Reaktor Strategic Roadmap — Generated 2026-05-16 — reaktor.build