A personal desktop dashboard built with Tauri 2 + SvelteKit. Aggregates daily workflow — tasks, calendar, vault knowledge, and an AI focus-picker — into a single native window.
Uses claude -p to pick the single most important task to work on right now, plus up to two queued next tasks. Automatically re-picks when tasks are completed or the pool changes. Calendar-aware: fetches today's upcoming events via gcalcli and avoids suggesting tasks whose estimates would run past the next meeting.
Live view of the Daily To-Do list from ClickUp. Check off tasks directly from the dashboard — completions sync back to ClickUp and trigger a Now/Next re-pick.
Four views (list, day, week, month) pulling from Google Calendar via gcalcli. Color-coded by calendar. Logical-day aware — days roll over at 4am, not midnight.
Three-tab view into a local Obsidian vault: active notes (hot.md), unprocessed inbox files, and a live wikilink graph rendered with d3-force. File clicks open directly in Obsidian.
Quick scratchpad that auto-saves to a local notepad.md file. Accessible from the dashboard without opening a separate editor.
Per-project context viewer. Add any local project by path; the dashboard reads and displays its context.md. Useful for keeping project notes visible without switching windows.
Modal for adding ClickUp tasks without leaving the dashboard. Supports list selection, priority, and tags. Logs every add to a Today doc in ClickUp.
| Layer | Tech |
|---|---|
| Desktop shell | Tauri 2 (Rust) |
| Frontend | SvelteKit 2 (SPA, adapter-static) |
| Language | TypeScript + Rust |
| Styling | Tailwind CSS 4 + @theme |
| Tasks | ClickUp HTTP API (v2 + v3) |
| Calendar | gcalcli (shell-out) |
| AI | claude -p subprocess (uses your Claude subscription) |
| Vault | Local Obsidian markdown files |
- Tauri prerequisites (Rust, WebView2 on Windows)
- Node.js 18+
- Claude Code CLI — logged in (
claudeon PATH) - gcalcli — authenticated with your Google account
- A ClickUp account + API token
-
Clone the repo
git clone https://github.com/pycoder49/aryan-os-dashboard.git cd aryan-os-dashboard -
Install JS dependencies
npm install
-
Configure environment
cp .env.example .env
Fill in
.env:CLICKUP_TOKEN=pk_your_token_here VAULT_PATH=C:/path/to/your/obsidian/vault -
Run in development
npm run tauri dev
-
Build for production
npm run tauri build
Set CLICKUP_TOKEN in .env. The dashboard targets a hardcoded Daily To-Do list ID — update DAILY_LIST in src-tauri/src/clickup.rs to match your own list.
gcalcli must be authenticated and working (gcalcli agenda should return events). Update the CALENDARS constant in src-tauri/src/calendar.rs with your calendar display names.
Set VAULT_PATH in .env to your Obsidian vault root. The vault widget expects:
wiki/hot.md— active noteswiki/log.md— daily lograw/notes/andraw/clips/— inbox files
These paths are configurable in src-tauri/src/vault.rs.
Three built-in themes toggled via the button in the header: Light, Dark, and Space (dark with a starfield background). Theme persists across restarts via localStorage.
src/
routes/ # SvelteKit pages
lib/
widgets/ # One .svelte file per widget
services/ # TypeScript invoke() wrappers
stores/ # Svelte stores (theme, refresh signals)
src-tauri/
src/ # Rust backend modules
See INDEX.md for a one-liner description of every source file.
MIT
