Standard Grant: SiaMind — Private Knowledge Workspace on Sia

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_wasm storage 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_wasm SDK 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_wasm registration 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_wasm SDK 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.

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)

Hi @juleslai - thank you for this proposal. We will be releasing new Grants Program funding guidelines next week and the next Grants Committee meeting will then be held on April 28th (with April 22 as the proposal submission deadline) to allow for adequate time for these new guidelines to be reviewed & incorporated into proposals.

Please review these guidelines next week and then tag me when/if you’ve updated your proposal accordingly to be reviewed.

Thanks @mecsbecs, understood. I’ll review the new guidelines once they’re out and update the proposal accordingly. Will tag you when it’s ready.

Jules

1 Like

@juleslai - the new guidelines have been posted:

Thanks @mecsbecs, I appreciate the work that’s gone into the new guidelines and the clearer direction they provide.

The “Building with SDKs” theme looks like a strong fit for SiaMind, particularly the small-files-with-constant-changes use case. I’ll wait for the JavaScript SDK release next week to understand what it exposes, then update the proposal accordingly ahead of the April 22nd deadline.

Jules

1 Like

@mecsbecs — the proposal has been updated and replaces the text at the top of this thread.
Summary of the main changes, aligned with the April 10th guidelines:

  • Theme declared as “Building with SDKs”; SiaMind is now explicitly built on the new sia_storage_wasm SDK with a dedicated adapter for Enhanced S5.js as a Milestone 1 deliverable.
  • Lands the two “want to fund” categories: a small useful everyday-tool replacement (Obsidian-style knowledge workspace), and the small-files-with-constant-changes SDK use case.
  • Milestones tightened, with M5 now focused on PWA packaging, Obsidian-compatible export, polish, public beta and launch.
  • Post-grant plans focus on what the project genuinely delivers without further funding; a static-site app that keeps working for users independently, with feedback channels via GitHub and Discord, and a clearly identified longer-term home.
  • Structure brought into line with the Standard Grant Proposal Template.

The revision also reflects feedback from previous Committee cycles on scope and focus.
Happy to answer any questions ahead of the Committee meeting on the 28th.

Jules

1 Like

Thanks for these edits @juleslai

This will be put before the Committee next week.

Following up on the brand guidelines reminder posted in #grants-program on Discord, I’ve now read the linked guidelines page. SiaMind incorporates “Sia” in the project name and so falls within the scope of what’s being asked. I’d not come across this guidance when drafting the proposal, so wanted to raise it now for the record.

Happy to rename the project. The proposal hasn’t shipped any code yet, the repository hasn’t been created, and there are no users to migrate, so the change is straightforward to make if the proposal moves forward.

Thanks for your proposal to The Sia Foundation Grants Program.

After review, the Committee has decided to reject your proposal citing the following reasons:

  • The Committee would prefer this project be native to Sia first, rather than based on S5, so Sia is not incorporated as an after-thought.

  • The project name includes “Sia” which is not compliant with our brand guidelines.

We’ll be moving this to the Rejected section of the Forum. Thanks again for your proposal, and you’re always welcome to submit new requests if you feel you can address the Committee’s concerns.