This is a personal cloud storage app, meant to allow dumping your personal info on self-hosted infrastructure and having it automatically sorted, organized, tagged and embedded to search for info later.
- Notes - Markdown notes with folder organization, tagging, and offline-first sync with conflict resolution.
- File Storage - Drag-and-drop file uploads with directory browsing, metadata, and tagging.
- Todos - Kanban board with four static columns (Today, This Week, This Month, This Year).
- LLM Chat - Streaming AI chat backed by a local LLM, with MCP tool integration for querying notes, todos, and files.
- SmartFS - A composable AI pipeline for file organization that analyzes uploads and suggests directory structures, adds tags, descriptions. I encourage reading docs/SmartFS.md for details.
- Semantic Search - Full-text and semantic search across notes, files and TODOs.
- PostgreSQL - Stores metadata for notes, files, todos, users, tags, chat sessions, and SmartFS entries.
- MinIO - S3-compatible storage for note markdown content, uploaded files, and chat message history.
- vLLM & Ollama - For LLM inference and Vision models.
- Supabase - Optional, used for authentication. Can be disabled for single-user mode.
- MCP - The Chat service uses MCP tools to query and/or create notes, todos, and files.
- Theming - Fully customizable light/dark themes editable in JSON, and synced in user profile.
- Observability - Optional OpenTelemetry tracing for both frontend and backend, sent to the Aspire collector. See docs/OpenTelemetry_Tracing.md.
- Tags - Tags are global and unique. A file + note + Todo tag map to the same unique tag. The Tag Management settings page allows to edit or delete a tag, which will cascade to every item that has it assigned. This prevents tag duplication and helps with Search.
.NET Aspire is used to orchestrate the services, but the frontend and backend can be deployed independently.
- Go 1.23+
- Bun 1.2+
- PostgreSQL
- MinIO (or any S3-compatible service)
- .NET 10.0 SDK (Optional, for Aspire)
- Supabase project (optional, only needed if multi-user tenancy is required)
- Ollama (optional, for chat and SmartFS)
- vLLM (optional, for Deepseek-OCR)
Filling in the .env file is required for the backend to run. See .env.example for the required variables.
Authentication is optional, and allows for multi-user tenancy.
To run in single-user mode, set in your env files:
# backend/.env
AUTH_ENABLED=false
# web/.env
VITE_AUTH_ENABLED=falseWhen disabled, a default user is automatically used for all requests. No JWT tokens are sent or verified.
dotnet run apphost.cscd backend
cp .env.example .env # Fill in your credentials
go mod tidy
go run ./cmd/servercd web
bun install
bun devThe frontend dev server proxies /api requests to the backend. See web/vite.config.ts for proxy configuration.
| Document | Description |
|---|---|
| SmartFS | AI file organization system overview |
| Search | Full-text search implementation |
| Orphaned Items | Detection and recovery of orphaned S3 objects |
This project serves as a learning and experimentation platform for working with technologies like OCR, LLMs, and vision models.
The application is fully functional but remains a work in progress and will continue to evolve as new features and experiments are added.






