Introduction
Project Name: SiaMind
Theme: Building with SDKs
Name of the individual submitting the proposal: Jules Lai (Fabstir)
Background: Founder/CTO of Fabstir with 4+ years building decentralised infrastructure. Prior Sia Foundation grant: Enhanced S5.js (2025, marked Complete — delivered 25% ahead of schedule, 10× under bundle-size requirement), plus multiple Fabstir Media Player grants. Related open-source work: fabstir-vectordb (production vector database on S5/Sia) and FabstirDB v2 (graph layer for Enhanced S5.js, published ahead of this deadline). Two FabGraph proposals were previously declined; I responded by building FabstirDB v2 on my own time and now propose the consumer application putting it to work.
Describe your project.
SiaMind is a browser-based knowledge workspace, think Obsidian, but with every note, document, and link stored directly on Sia via the sia_storage_wasm SDK, encrypted and owned entirely by the user. It is a consumer-facing Sia-native application that demonstrates the new WASM SDK’s suitability for the “small files with constant changes” use case; notes are small files, constantly edited and synced, with exactly the repacking and synchronisation challenges the SDK is designed to address.
To our knowledge, no application of this kind exists on Sia today. DecaNotes delivered basic Markdown note-taking and Chi-voice collects audio datasets, but there is no Obsidian-style knowledge workspace: a tool where users write and link notes, upload and reference documents, navigate a personal knowledge graph, and search across everything, all backed by decentralised encrypted storage. SiaMind fills this gap.
Users write Markdown notes, upload documents (PDF, text, images), and link them together in a personal knowledge graph. The browser communicates directly with Sia hosts via sia_storage_wasm; indexd coordinates host selection and file repair but never touches the data. Bidirectional links between notes are maintained by a small graph layer (FabstirDB v2) on top of Enhanced S5.js. SiaMind is a complete, standalone knowledge workspace on Sia — no external dependencies beyond the Sia network itself, no server-side component, no SaaS layer.
Who benefits from your project?
- End users seeking data sovereignty for their knowledge work — the widespread population currently trusting Notion, Obsidian Sync, or Google Keep with personal research, ideas, and intellectual work. SiaMind gives this group a genuine decentralised alternative where every note lives on Sia, encrypted with user-controlled keys.
- The Sia developer ecosystem — SiaMind produces an open-source
sia_storage_wasmstorage adapter for Enhanced S5.js as a side-effect of Milestone 1. This adapter is reusable by any TypeScript application using Enhanced S5.js, removes the need for any S5 portal dependency, and becomes a drop-in building block for future Sia-native apps. - The Sia Foundation’s SDK adoption goals — SiaMind is a consumer-facing demonstration of the new
sia_storage_wasmSDK under exactly the workload the SDK was designed for: small files with constant changes. Real-world performance data on concurrent editing, document uploads, and sync operations will be generated and shared back to the Foundation. - The broader data-sovereignty and privacy communities — a polished, production-quality consumer app built on decentralised storage gives advocates in these communities a concrete daily-use tool to point to, rather than only developer-facing infrastructure. This expands the public case for “user-owned data” beyond the Sia community.
How does the project serve the Foundation’s mission of user-owned data? What problem does your project solve?
Today, anyone using Notion, Obsidian Sync, Google Keep, or Apple Notes is storing their most private thoughts, research, and intellectual work on corporate servers. Even “local-first” tools like Obsidian require a paid sync service to work across devices, routing data through centralised infrastructure.
SiaMind replaces this with a model where notes live on Sia, uploaded directly to hosts from the browser via sia_storage_wasm, distributed across the decentralised network. All content is encrypted with user-controlled keys before leaving the device; no one — not Sia hosts, not indexd operators, not the developer — can read the user’s notes. Because data is tied to the user’s identity on the Sia host network rather than any specific indexd instance, it’s accessible from any device and users can switch indexd operators in seconds with no data movement. And because SiaMind is a static site with no backend, there is no SaaS layer, no API key to rotate, and no service that can be shut down. If the hosted version ever disappears, users can serve the app from their own machine and their data keeps working.
This project demonstrates Sia as infrastructure for everyday productivity tools, not just developer-facing storage. It shows non-technical users what “user-owned data” feels like in practice: their notes, their keys, their data; accessible everywhere, controlled by no one else.
We cannot provide grants to residents of jurisdictions under increased FATF monitoring, those that have active OFAC sanctions, or those that fail our bank compliance tests. We also cannot provide grants if your payment bank account is located in those same locations. Please review the following list.
Are you a resident of any jurisdiction on that list? No
Will your payment bank account be located in any jurisdiction on that list? No
Grant Specifics
Amount of money requested and justification
Total Amount Requested: $35,000 USD over 5 months, paid monthly.
| Month | Milestone | Budget (USD) |
|---|---|---|
| Month 1 | SDK Integration, Design Documents & Project Foundation | $7,000 |
| Month 2 | Markdown Editor, Note Storage, Encryption & Offline Support | $7,000 |
| Month 3 | Bidirectional Linking, Documents & Graph Layer | $7,000 |
| Month 4 | Search, Graph Visualisation & Navigation UI | $7,000 |
| Month 5 | PWA Packaging, Export, Polish & Launch | $7,000 |
| Total | 5 months | $35,000 |
Justification: My prior Sia Foundation grant (Enhanced S5.js) was delivered 25% ahead of schedule and 10× under the technical bundle-size requirement; this proposal is calibrated to the same pace. The underlying infrastructure (Enhanced S5.js, FabstirDB v2, sia_storage_wasm SDK) already exists and is production-tested, so the grant covers the application layer only, not foundational research. All development is performed directly by the applicant; no subcontracting.
High-level architecture overview and security best practices
┌─────────────────────────────────────────────────────────┐
│ SiaMind (Browser PWA) │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Markdown │ │ Document │ │ Graph │ │
│ │ Editor │ │ Viewer │ │ View │ │
│ │ (Block-based)│ │ (PDF/Text) │ │ (Force- │ │
│ │ │ │ │ │ directed) │ │
│ └──────┬───────┘ └──────┬───────┘ └───────┬──────┘ │
│ │ │ │ │
│ ┌──────┴─────────────────┴──────────────────┴───────┐ │
│ │ SiaMind SDK (TypeScript) │ │
│ │ • Note CRUD, linking, search │ │
│ │ • Document upload/retrieval │ │
│ │ • FabstirDB v2 graph layer │ │
│ │ • Local cache (IndexedDB) + sync │ │
│ │ • Export (Markdown archive, Obsidian vault) │ │
│ └──────────────────┬────────────────────────────────┘ │
│ │ │
│ ┌──────────────────┴────────────────────────────────┐ │
│ │ Graph layer + Enhanced S5.js │ │
│ │ • Bidirectional note links (nodes, edges) │ │
│ │ • Path-based filesystem (deterministic paths) │ │
│ │ • XChaCha20-Poly1305 encryption (client-side) │ │
│ │ • CBOR serialisation for structured data │ │
│ │ • HAMT sharding for scalable storage │ │
│ └──────────────────┬────────────────────────────────┘ │
│ │ │
│ ┌──────────────────┴────────────────────────────────┐ │
│ │ sia_storage_wasm Adapter (new, open-source) │ │
│ │ • Wraps sia_storage_wasm for Enhanced S5.js │ │
│ │ • Streaming upload/download to Sia hosts │ │
│ │ • Packed uploads for small files │ │
│ │ • Range downloads for lazy loading │ │
│ │ • Seal/Open for encrypted offline metadata │ │
│ └──────────────────┬────────────────────────────────┘ │
└─────────────────────┼───────────────────────────────────┘
│
┌───────────┴───────────┐
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ Sia Hosts │ │ indexd │
│ (Direct) │ │ (Metadata & │
│ │ │ Repair) │
│ • Notes │ │ │
│ • Documents │ │ • Host list │
│ • Indexes │ │ • Pinning │
│ • Graph data │ │ • Repair │
└──────────────────┘ └──────────────────┘
The browser uploads and downloads data directly to and from Sia hosts via sia_storage_wasm. Indexd (accessed via Sia Storage or self-hosted) provides the host list and handles file repair when the app is offline, it never touches the actual data. Users are never locked into a specific indexd operator; re-pinning takes seconds and requires no data transfer. The new sia_storage_wasm adapter replaces the S5 portal dependency entirely, giving Enhanced S5.js a fully Sia-native storage backend that any TypeScript application can reuse.
The SDK’s features map directly to SiaMind’s needs: streaming upload/download for large documents; packed uploads batching small notes into fewer network operations (the “small files with constant changes” pattern); range downloads for lazy loading of large knowledge bases; seal/open for client-side encrypted offline metadata; object metadata for note titles, tags, and timestamps without a separate index; and OAuth-style app connection so users sign up for Sia Storage with no crypto knowledge required.
Security best practices:
- All data encrypted client-side with XChaCha20-Poly1305 (Enhanced S5.js) before upload
- User identity derived from mnemonic seed via
sia_storage_wasmregistration flow (no passwords stored) - No server-side component; SiaMind is a static site
- Content Security Policy headers to prevent XSS; Subresource Integrity for external dependencies; all dependencies audited and pinned
Following the Sia Foundation Development Guide: all code MIT-licenced, clean commit history, >85% test coverage, CI/CD with automated testing, documentation in repository.
Timeline with measurable objectives and milestones
Total duration: 5 months. All milestones include >85% test coverage, CI passing, and updates to repository documentation.
Milestone 1: SDK Integration, Design Documents & Project Foundation (Month 1)
Build the sia_storage_wasm storage adapter for Enhanced S5.js, produce design documents for the full application, and establish a working project foundation with Sia Storage connectivity.
| Task | Measurable Outcome |
|---|---|
sia_storage_wasm storage adapter |
Open-source TypeScript adapter wrapping sia_storage_wasm as a storage backend for Enhanced S5.js — upload, download, streaming, packed uploads, range downloads, seal/open |
| Authentication flow | User registration and app connection via sia_storage_wasm OAuth-style flow (mnemonic seed, app key management) |
| Design documents | Data model, storage path conventions, UI wireframes, component architecture, API surface — published in repository |
| Project scaffolding | Next.js/React + TypeScript, CI/CD pipeline, linting, test framework |
| Enhanced S5.js integration tests | All Enhanced S5.js operations (path-based read/write, HAMT sharding, encryption, CBOR) verified via the new adapter |
Success criteria: Enhanced S5.js reads/writes to Sia via sia_storage_wasm adapter with no S5 portal dependency; user can sign up via Sia Storage and authenticate in the browser; design documents published; all tests passing.
Milestone 2: Markdown Editor, Note Storage, Encryption & Offline Support (Month 2)
Deliver a functional encrypted note editor with persistence to Sia and offline capability.
| Task | Measurable Outcome |
|---|---|
| Note data model | CBOR schema (content, metadata, timestamps, tags) stored via deterministic Enhanced S5.js paths |
| Client-side encryption | XChaCha20-Poly1305 encryption/decryption of all note data before upload |
| Markdown editor UI | Block-based Tiptap editor with formatting toolbar, keyboard shortcuts, live preview |
| Note CRUD | Create, read, update, delete — encrypted and persisted to Sia via Enhanced S5.js + sia_storage_wasm |
| Local cache layer | IndexedDB cache for offline access; sync queue for pending uploads |
| Conflict resolution | Last-write-wins with timestamp-based merge for offline edits |
| Basic sidebar navigation | Note list, create, sort by date/title |
Success criteria: User can create/edit/delete Markdown notes with a polished editor; notes encrypted before upload and decrypted on retrieval; app works offline and syncs when reconnected.
Milestone 3: Bidirectional Linking, Document Upload & Graph Layer (Month 3)
Integrate FabstirDB v2 for the knowledge graph and add document management.
| Task | Measurable Outcome |
|---|---|
| FabstirDB v2 integration | Bidirectional note relationships via FabstirDB v2 on Enhanced S5.js |
| Wiki-style linking | [[note-name]] syntax parsed in editor; creates graph edges |
| Backlinks panel | Each note displays notes linking to it |
| Document upload | PDF, text, image upload to Sia via Enhanced S5.js + sia_storage_wasm (streaming for large files) |
| Document-to-note linking | Documents linkable to notes; appear as referenced resources |
| Tag system | Tag notes/documents; filter by tags in sidebar |
| Interim progress demo | 2–3 min video posted to forum progress thread showing linking and document upload working |
Success criteria: User can create wiki-style links between notes and see backlinks; PDF/text/image documents uploadable and linkable; FabstirDB v2 maintains bidirectional graph relationships; interim demo published.
Milestone 4: Search, Graph Visualisation & Navigation UI (Month 4)
Full-text search, interactive graph view, and polished navigation — the features that make SiaMind feel like a real knowledge workspace rather than a note editor.
| Task | Measurable Outcome |
|---|---|
| Full-text search | Client-side search index built from note/document content; instant results |
| Graph visualisation | Interactive force-directed graph showing note/document connections |
| File tree sidebar | Hierarchical note/folder navigation with drag-and-drop |
| Recent notes & quick switcher | Cmd/Ctrl+K switcher |
| Developer documentation draft | API reference and architecture docs (finalised in M5) |
| Interim progress demo | Short video posted to forum showing search and graph view |
Success criteria: Full-text search returns results across all notes and documents; graph view renders connections interactively; file tree and quick switcher working; interim demo published.
Milestone 5: PWA Packaging, Export, Polish & Launch (Month 5)
Package as a PWA, add export paths that protect users from lock-in, polish for public release, and record a comprehensive demo.
| Task | Measurable Outcome |
|---|---|
| PWA packaging | Service worker, manifest, install prompt on desktop and mobile |
| Responsive layout | Desktop, tablet, mobile layouts with collapsible sidebar |
| Export to standard formats | Export as Markdown archive (with YAML front-matter) and as Obsidian-compatible vault |
| Theming | CSS-variable-based theming with light, dark, high-contrast themes bundled; documented for community contribution |
| Public beta & dogfooding | Mid-milestone public beta release with open invitation for feedback on Sia forum and Discord, and GitHub Issues template for bugs. In parallel, migrate my own working notes into SiaMind and document the migration experience publicly. |
| Performance benchmarks | Documented load, edit-latency, sync performance on a realistic knowledge base (sized to dogfooded usage) |
| Demo video | Comprehensive walkthrough: sign-up, note creation, Markdown editing, document upload, wiki-linking, backlinks, graph view, search, PWA install, export |
| Final documentation | End-user guide, getting-started tutorial, architecture docs, FAQ |
| Public launch | App deployed to public URL; final announcement on Sia forum and Discord |
| Final testing & polish | >85% overall coverage; zero critical bugs; any reproducible issues from public beta addressed |
Success criteria: App installable as PWA on desktop and mobile; exports work cleanly in both formats; three bundled themes shipped; public beta released mid-milestone with migration write-up published; demo video published; app deployed and publicly accessible for committee testing; comprehensive docs published.
Who is the target user for your project?
Primary persona: a researcher, journalist, or independent professional, technically literate but not a developer, who has accumulated a substantial personal corpus of notes, papers, and reference material over several years. They are currently paying for Obsidian Sync, Notion Plus, or similar, and are actively uncomfortable with where their data lives, either for specific reasons (sensitive sources, pre-publication research, regulatory or ethical obligations) or because they’ve read enough about data breaches, Big Tech content scanning, and sudden service shutdowns to be looking for alternatives. They already know what a knowledge graph is, they already use wiki-style links, and they want the tools they’ve come to rely on without the custodial relationship.
This is the user who opens SiaMind on day one, migrates from Obsidian by copy-pasting (or manually re-creating) their most important notes to try the app, and if it’s good, stays. They are not the average Notion user, and SiaMind is not trying to compete for the average Notion user.
Secondary user: the Sia-ecosystem developer building their own TypeScript application on Enhanced S5.js, who picks up the open-source sia_storage_wasm storage adapter released under Milestone 1 and saves themselves weeks of integration work.
SiaMind is deliberately not targeted at the mainstream productivity market. Displacing Notion or Obsidian for general users is not a realistic goal for a standalone grant project, and the proposal does not claim that. The aim is to serve the privacy-conscious segment well, and to give the Sia ecosystem a compelling consumer-facing example of what the WASM SDK enables.
What are your plans for this project following the grant?
SiaMind is designed to be a standalone, open-source tool that anyone can use immediately after the grant concludes. The post-grant picture has three parts:
- SiaMind as delivered keeps working. SiaMind is a static site with no hosted backend, no API keys, and no subscriptions. Users who install the PWA keep using it indefinitely regardless of what I do next, there is no service I need to keep running for their benefit. Standard-format export shipped in M5 ensures no user is ever locked in.
- Community feedback channels. GitHub Discussions will be enabled on the SiaMind repository for bug reports, feature requests, and theme contributions. I’ll maintain a SiaMind-specific presence on the Sia Discord for ecosystem users. Continued feedback to the Foundation on
sia_storage_wasmSDK performance and edge cases happens automatically as I use the SDK. SiaMind will be one of the earliest consumer apps generating this kind of feedback at scale. - SiaMind’s natural home is Platformless AI. The Foundation is already familiar with Platformless AI from the Enhanced S5.js grant demo. Platformless AI’s MVP is now running as part of a trade-press-documented Proof of Concept with Stonesthro and Cornerstone, a UK micro-edge computing partnership moving into advanced deployment across multiple sites. Platformless AI is waiting on team funding before its next development phase; when that phase begins, SiaMind becomes Platformless AI’s knowledge-workspace layer, with collaboration features (teams, shared knowledge bases, permissioned sub-graphs) developed there. This gives SiaMind a credible long-term home without requiring ongoing solo maintenance to justify its existence.
Candidates for post-grant work, driven by whichever community feedback emerges first: mobile UX refinements, richer editor features (tables, math rendering, syntax highlighting), community-contributed themes, performance on larger knowledge bases. These are not commitments; they will be triaged as requests come in.
Potential risks that will affect the outcome of the project
| Risk | Mitigation | Impact | Probability |
|---|---|---|---|
sia_storage_wasm SDK maturity |
SDK was merged April 2026 and may have early-stage edge cases. Aggressive IndexedDB caching so the user always works against a local cache with background sync. Issues reported upstream. The Enhanced S5.js adapter provides an abstraction layer that can accommodate SDK changes without rewriting SiaMind. | Medium | Medium |
| User adoption of a new Sia-native consumer tool | Obsidian and Notion are entrenched. Target the privacy-conscious segment specifically via Sia Discord, Matrix communities, privacy-focused subreddits; design the app so it works standalone without Sia knowledge; ship Obsidian-compatible export in M5 so users face zero lock-in fear when trying it; dogfood in M5 and document the experience publicly to surface real UX issues before launch. | Medium | Medium |
| Milestone 4 graph visualisation performance | Force-directed graph rendering can be expensive on 1000+ notes. Use Cytoscape.js (or similar) rather than building from scratch; implement LOD and clustering; defer edge-case performance work to post-grant. | Medium | Low |
| Browser storage limitations | IndexedDB used for hot cache only; full data on Sia. Lazy loading and pagination for large collections. HAMT sharding handles large directory structures efficiently. Range downloads via sia_storage_wasm enable partial fetching. |
Low | Low |
| Editor complexity | Use Tiptap (ProseMirror-based), a battle-tested open-source editor framework. | Low | Very Low |
Development Information
Will all of your project’s code be open-source?
Yes. All code developed under this grant for SiaMind will be open-source under the MIT licence, with no closed-source components. This includes the sia_storage_wasm storage adapter for Enhanced S5.js, which will be published as a standalone reusable package. Third-party dependencies used (e.g. Tiptap for the editor, Cytoscape.js for graph rendering) are all appropriately licensed open-source libraries.
Leave a link where code will be accessible for review.
- SiaMind Repository: https://github.com/Fabstir/siamind (to be created upon approval)
- Enhanced S5.js (prior grant, completed): GitHub - julesl23/s5.js: TypeScript/JS Library for S5 · GitHub
- FabstirDB v2 (graph layer used by this grant): GitHub - Fabstir/fabstirdb-v2: Decentralised graph database on Enhanced S5.js and the Sia storage network · GitHub - published ahead of this proposal’s submission deadline. Original FabstirDB (OrbitDB/IPFS-based, for reference) at GitHub - Fabstir/fabstirdb · GitHub
- fabstir-vectordb (proof of concept for structured query workloads on Sia/S5): GitHub - Fabstir/fabstir-vectordb · GitHub (demo)
- Sia Storage WASM SDK (the SDK this grant builds on): Wasm Bindings by Alrighttt · Pull Request #329 · SiaFoundation/sia-sdk-rs · GitHub
Do you agree to submit monthly progress reports?
Yes. Monthly progress reports will be submitted in the Sia Forum grants thread, following the Foundation’s required format.
Contact info
Email: [email protected]
Any other preferred contact methods: Sia Discord (@jules_lai), GitHub (@julesl23)