Inspiration

AI systems are getting more capable, but the knowledge we give them is still fragmented across notes, documents, chats, and tools. Sending everything creates noise; sending too little loses the meaning. We built Nodex around a simple idea: less context, better context. Knowledge should be captured as small, connected, reusable nodes so people — and eventually AI agents — can retrieve exactly what matters.

What it does

Nodex is a local-first collaborative knowledge workspace. Users can create nodes, connect and reuse them across a graph, add structured fields, and find information through fast local search. Rich-text editing is powered by collaborative CRDT documents, so work remains available offline and can merge safely across devices.

Instead of routing personal knowledge through a central content server, Nodex synchronizes workspaces directly between authorized peers. It also supports live presence, workspace invitations, attachments, and device pairing. A bundled on-device model builds embeddings for semantic retrieval, keeping private knowledge and inference local.

How we built it

Nodex is built primarily in Rust with Dioxus as a shared desktop and mobile application shell. The backend is a modular monolith split into a pure domain core, an application/runtime layer, a dedicated Iroh networking boundary, and a local embedding engine.

TipTap and Yjs power the collaborative editor. Iroh Docs, blobs, and gossip provide peer-to-peer replication, attachments, presence, and control-plane communication. libSQL stores local derived indexes for full-text and vector search, while Candle runs the bundled embedding model on-device.

We used Codex with GPT-5.6 throughout development to navigate and refactor a large Rust and TypeScript codebase, implement end-to-end features across strict module boundaries, reason through async ownership and lifecycle problems, and create runnable tests and architecture checks. Codex was especially valuable when a single product interaction crossed the Dioxus UI, the Rust runtime, the Yjs bridge, local storage, and P2P synchronization.

Challenges we ran into

The hardest challenge was making offline editing, real-time collaboration, durable storage, and peer-to-peer synchronization behave like one coherent product rather than four separate systems.

We also had to design a strict Rust-to-TypeScript bridge for collaborative editor updates, preserve causal CRDT state through retries and reconnects, keep local search indexes synchronized with source documents, and manage desktop and mobile lifecycle differences without creating separate backends.

As the system grew, another challenge was preserving clear ownership. We addressed it with typed contracts, one canonical command pipeline, explicit runtime owners, and executable architecture rules that fail when code crosses a forbidden boundary.

Accomplishments that we're proud of

We built a local-first workspace where the same knowledge graph can be edited offline, synchronized directly between peers, and searched without uploading private content to a cloud service.

We are proud that Nodex is more than a technical proof of concept: it combines a graph editor, structured fields, collaborative rich text, invitations, device pairing, attachments, presence, lexical search, and an on-device embedding pipeline in one coherent experience.

We are also proud of the engineering foundation. Desktop and mobile share the same backend runtime, critical boundaries use typed domain values, and automated checks protect the architecture as the product evolves.

What we learned

We learned that local-first software is primarily a lifecycle and ownership problem. Storing data locally is the easy part; the difficult part is deciding who owns every task, retry, document update, network lease, and shutdown transition.

We also learned that CRDTs and peer-to-peer networking become much easier to reason about when boundaries are explicit and deterministic. For AI-assisted development, Codex with GPT-5.6 worked best when we gave it clear invariants and executable verification instead of relying only on prose.

Most importantly, we learned that useful AI context does not have to be large. A connected graph can provide smaller, more relevant, and more explainable context than a pile of documents.

What's next for Nodex

Next, we plan to turn the knowledge graph into a context engine for AI workflows: selecting compact, explainable context packs for conversations and agents instead of blindly filling a context window. We also plan to make AI agents first-class participants in Nodex. Using Rig or a Codex-derived agent runtime, users will be able to collaborate with agents that reason over permissioned parts of a workspace, retrieve the right context, propose changes, and perform auditable actions. This will evolve Nodex from a knowledge workspace into a complete human-agent collaboration system.

We also want to polish the mobile experience, improve semantic ranking and graph-based retrieval, add richer collaboration controls and reusable workspace templates, and make it easier for new users to import existing notes and start building a connected knowledge base immediately.

Built With

  • candle
  • dioxus
  • gpt-5.6
  • iroh
  • iroh-docs
  • libsql
  • openai-codex
  • rust
  • tiptap
  • tokio
  • typescript
  • yjs
Share this project:

Updates