- TypeScript 99.6%
- Dockerfile 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
- store/pause.ts: shared pause switch backed by the kv table (persists across restarts); default running, pause()/resume()/toggle() - drain-queue & poll-delta skip their ticks while paused (checked at tick start: in-flight work finishes, then polling + draining stop) - POST /admin/pause + /admin/resume (session-gated, logged) - /status now exposes indexing: paused|running - search UI header: Pause indexing / Resume indexing button (state refreshed from /status on load) - test/pause.test.ts: round-trip, idempotence, KV-level flag 109 tests pass, tsc clean. |
||
| .forgejo/workflows | ||
| docker | ||
| specs | ||
| src/mastra | ||
| test | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| bun.lock | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
cloud-search
Indexes a personal OneDrive into a locally hosted Meilisearch index. A continuously running agent (Bun + Mastra) polls the Graph delta API and indexes every file:
- all files — metadata: filepath, type, dates, size, location (EXIF GPS)
- images — LLM summary + OCR text from the photo
- documents (pdf, docx, …) — extracted text content + LLM summary
- text files (csv, txt, log, md, …) — content (when small) + LLM summary
Query surface
https://cloudsearch.barbara8.de— public, session-gated search UI (operator password login; sign in at/login, connect OneDrive at/auth).- Tailscale-only raw API: Meilisearch at
http://100.96.0.81:17700(master-key protected), app ad-hoc athttp://100.96.0.81:18124(/healthz,/status,/search,/auth). - Session-gated admin:
POST /admin/pause+POST /admin/resume(toggle the indexing pipeline from the UI header — poll and drain ticks skip while paused; state persists across restarts),POST /admin/reindex(rebuild Meilisearch from the extraction cache — no downloads/LLM) andPOST /admin/requeue-failed(reset terminally failed queue rows).
Status: v0.5 — indexing pipeline live (in code). The stack (app +
Meilisearch) deploys and serves the UI, and the full pipeline runs:
poll-delta (every 5 min, resumable Graph delta walk behind a
single-flight lock) → drain-queue (every minute, bounded-concurrency
worker: etag-dedup → download → extract → one LLM call → Meilisearch).
The index fills once OneDrive is connected (/auth) and the baseline walk
completes — see the spec's rollout plan (baseline ≈ 35k photos is v1).
One-time setup (spec §"First-time bootstrap"): register the Azure
redirect URIs https://cloudsearch.barbara8.de/auth/callback and
http://100.96.0.81:18124/auth/callback, then connect OneDrive at
/auth once.
- Spec:
specs/cloud-search.md— read this first - Stack: Meilisearch v1.53.1 (re-hosted on the Forgejo registry) +
Bun/Mastra indexer + libSQL state; LLM via the local vLLM endpoint
(
mac/qwen3.6-35b-a3bonllm.schwanke.it) - Deploy: Dockhand stack
cloud-searchon UM890 (env 3); Pattern D CI (.forgejo/workflows/ci.yml) builds both images and deploys on push tomain - Related:
home/agent— appointment-detection agent; reuses its OneDrive auth, libSQL, and LLM/session patterns