Milestones
This is a rough planning document for developer-facing roadmap discussion. It is intentionally small and editable.
Milestone 0: Current foundation
Current work already covers a substantial slice of the core platform:
- 3D runtime with scene rendering, physics, spatial UI, and in-world surfaces.
- Fennel + C++ application model with the new layout/widget system replacing the older Python prototype.
- Entity and graph-oriented architecture for app state, knowledge objects, and linked views.
- Core workspace widgets and interactions, including text, buttons, inputs, lists, layout primitives, focus, and selection.
- Embedded integrations already present in the codebase:
- OpenAI responses client and graph-oriented LLM conversation work.
- Xapian search.
- Terminal widget.
- FFmpeg video playback.
- CEF-based browsing work.
- Matrix bridge foundation.
- libtorrent binding.
- wallet-core based wallet flow.
- Internal tooling for tests, profiling, render capture, and remote-control debugging.
This milestone is less about missing capability and more about making the existing pieces feel coherent as one product.
Milestone 1: Usable graph foundation
The graph is meant to expose everything through one uniform interface: state, code, system objects, files, world objects, and other user-facing data. It is also the basis for other interfaces layered on top of it, not just the current graph view.
Focus on making that model actually usable:
- tighten graph browsing and editing flows
- improve linking between tasks, notes, code, errors, files, and conversations
- make graph-backed objects easier to inspect, edit, and navigate
- keep the graph model view-agnostic so future interfaces such as audio-first interaction can sit on top of the same structure
This is the most important immediate milestone because it improves the conceptual center of the system without requiring the hardest infrastructure work first.
Focus/risk: prioritize a few strong universal interactions over theoretical completeness. If inspection, linking, filtering, and navigation are weak, expanding graph coverage will mostly create noise.
Milestone 2: Integrated workspace loop
This milestone should stay practical and avoid the deepest runtime redesigns.
- connect graph, terminal, search, file/code views, and basic editing into one coherent workflow
- improve the browser and media surfaces enough for reference and exploration during development
- make common user actions obvious and easy to learn
This milestone is about establishing a small but coherent workspace loop.
Focus/risk: define one or two complete workflows and make them feel natural. Breadth matters less here than a loop that is easy to understand and repeat.
Milestone 3: Interactive world building
After the graph foundation is usable, focus on live world editing:
- add and manipulate terrain interactively
- place arbitrary widgets into the world
- create new widgets and geometry live in context
- expose physics and lighting controls so worlds become editable, usable, and playable
This is a strong demo milestone because it shows why space is not just another desktop UI.
Focus/risk: keep the first version constrained. A small set of terrain, geometry, widget, physics, and lighting workflows is more valuable than an early attempt at a full editor.
Milestone 4: Malleable live development
Move toward malleable systems by letting users edit things in the context of use:
- edit widgets where they are being used instead of in a disconnected toolchain
- improve live code reload so changes can be applied quickly and safely
- support code living in multiple repositories while still appearing live inside space
This milestone likely introduces some architectural challenges:
- code identity and reload boundaries
- mapping live objects back to source definitions
- fast reload without leaving stale state behind
- multi-repo development without collapsing into ad-hoc compatibility layers
- preparing for a permission model that still works once live code editing expands
- providing history, snapshots, and rollback so live editing is usable rather than fragile
Focus/risk: define explicit reload units early. Without clear boundaries, malleability can turn into global invalidation, unclear ownership, and difficult live-state bugs.
Milestone 5: Graph-native conversations and tools
Use the existing OpenAI integration and graph LLM direction in a minimal way:
- make saved conversations first-class graph objects
- support branch/fork workflows cleanly
- connect conversations to related entities such as tasks, code, and notes
This should stay narrow: useful agentic workflows without trying to solve all automation at once.
Focus/risk: keep LLM features subordinate to the graph and entity model. The first version should make conversations, branches, and links useful before attempting broader automation.
Milestone 6: Compiled update pipeline
The current update system resolves chains live. A later milestone is to declare update dependencies and generate optimized update functions from that graph.
- declare update dependencies explicitly
- generate optimized and possibly inlined update functions
- explore whether this becomes the basis for render/update specialization more broadly
This may require a deeper architectural shift, so it should come after the system is already useful.
Focus/risk: it is still unclear whether declared update dependencies become part of the user-facing programming model or remain an optimization layer. That decision will shape the architecture significantly.
Milestone 7: Live native generation
If the compiled update model works well, use the existing GCCJIT work more aggressively:
- generate update functions in C live
- explore live-generated renderers and other performance-critical paths
- keep the workflow interactive rather than turning this into an offline build system
- explore whether generated code paths can support capability-aware permission enforcement before native code is emitted
This stays intentionally later because it depends on earlier clarity about the runtime model.
Focus/risk: only push this once the update/runtime model is stable enough to justify native generation. Otherwise the system may accumulate compiler complexity before the abstractions are ready.
Milestone 8: Matrix worlds and realtime sync
Shared worlds can start on Matrix and add more specialized realtime transport where needed:
- continue Matrix world and room capabilities for shared state
- define the first real shared-world workflow
- add yojimbo for realtime synchronization where Matrix alone is not a good fit
- define a permission model for shared-world actions so editable worlds do not imply unrestricted code and object mutation
- establish object provenance and trust so users can tell where shared code, assets, and behaviors came from
Focus/risk: keep durable shared state and fast transient sync as separate concerns. Matrix and yojimbo can complement each other, but only if their responsibilities stay clear.
Milestone 9: Social and contribution features
Build social features on top of the collaboration layer:
- profile pages and discussions based on Matrix
- contribution-oriented views around code, assets, and worlds
- one-click tipping for useful contributions using the wallet-core integration
This is a good example of a feature area that should stay small at first and become richer only after the core workspace is compelling.
Focus/risk: keep social features centered on meaningful objects such as code, assets, widgets, and worlds. Avoid expanding into generic social surface area too early.
Milestone 10: Shared world gameplay
Build more complete game-oriented shared world features on top of the collaboration and world-building foundations:
- support richer world actors such as avatars and vehicles
- make it possible to host and play multiple game-like experiences inside worlds
- keep gameplay systems compatible with live editing so worlds remain modifiable in use
Focus/risk: gameplay should grow out of the same editable world and object model rather than becoming a disconnected subsystem. The challenge is keeping interactivity, multiplayer behavior, and live modification coherent.
Milestone 11: User-owned services and distribution
Use the existing pod/torrent/wallet concepts carefully and incrementally:
- identify one concrete "space pod" responsibility worth shipping first
- use libtorrent where it clearly helps with asset or bundle distribution
- keep wallet work focused on practical workflows, not broad chain coverage
This milestone should remain infrastructure-light until the core workspace and collaboration loops are stronger.
Focus/risk: let concrete usage shape pods and distribution responsibilities. Over-designing this layer too early would create infrastructure without a proven product loop above it.
