What I built

DeskGraph is a local-first computer context graph for the folders a person explicitly chooses to authorize. It builds a local SQLite manifest, supports bounded local document extraction, and makes that context searchable without requiring an API key, Python, Docker, Ollama, or a cloud upload.

The current pre-release development build demonstrates:

  • explicit native folder authorization and a separate metadata-only manifest scan;
  • bounded local extraction for selected text, Markdown, source code, text-layer PDF, DOCX, PPTX, and XLSX files;
  • offline SQLite FTS5 lexical search for Traditional Chinese and English, with bounded snippets and an explanation of which local field matched;
  • conservative Project candidates, exact-duplicate and numeric filename-version suggestions, and screenshot review groups;
  • a suggestion-only Smart Cleanup Inbox and durable Cleanup Preview;
  • a narrowly scoped, independently launched read-only MCP search_files tool.

Privacy and safety are core product behavior. DeskGraph does not upload filenames, paths, document text, OCR, embeddings, or graph data by default. Granting a folder does not automatically read its file contents. Extracted text is treated as untrusted data, and the current Rename and Cleanup surfaces are deliberately Preview-only: they cannot move, delete, trash, or modify a source file.

Why it matters

Personal files contain useful context, but most “AI organizer” ideas ask people to hand over their whole computer or trust opaque automation. DeskGraph addresses the narrower, practical problem first: give a person—and an AI agent using read-only MCP—a controllable local view of explicitly selected context.

The product favors evidence, preview, and refusal over unsafe automation. Cleanup suggestions are not permission to change a file, and future actions remain gated behind identity validation, durable transactions, recovery, and Undo requirements.

How I built it

Rust owns filesystem policy, SQLite state, extraction jobs, graph and retrieval logic, transaction protocols, and MCP. Tauri with React and TypeScript provides the desktop experience. SQLite FTS5 provides the current offline lexical retrieval layer.

Codex, powered by GPT-5.6, was used as a development collaborator under human direction. It helped investigate the codebase, split work into safety-bounded vertical slices, implement and review changes, and run Rust and TypeScript validation gates.

One important outcome was a safety decision: Codex helped reproduce a Unix wrong-inode race between final validation and pathname rename. Rather than weaken the safety model to enable a demo action, I kept production Rename and Move Preview-only. That decision reflects the project’s central rule: features without sufficient proof stay closed.

Reproducibility and current limits

Use a fresh clone and only a harmless synthetic folder:

corepack enable
corepack prepare [email protected] --activate
pnpm install --frozen-lockfile
cargo test --workspace --all-features -- \
  --skip macos_recommended_watcher_delivers_a_live_file_hint \
  --skip macos_native_runtime_reconciles_create_modify_rename_and_delete \
  --test-threads=1
pnpm check
cargo run -p deskgraph-cli -- fixture demo \
  --path /absolute/new/path/deskgraph-demo

The fixture exercises real local backends for metadata scanning, bounded extraction, Traditional Chinese and English search, a Project candidate, duplicate/version evidence, Smart Cleanup Inbox derivation, and a durable non-executable system-trash Preview. It verifies that the generated source files remain unchanged.

DeskGraph is a pre-release development build, not a completed v0.1 release. The verified desktop evidence is currently macOS arm64 development evidence. Search is lexical rather than vector or hybrid; Watch Mode is not complete incremental content indexing; and no production file action, Trash, recovery, or Undo is enabled.

Built With

Share this project:

Updates

Submission history