How moein-alas/obsidian-intake works
Obsidian Intake manages external files through an Obsidian extension and a Python router: files are staged in the Vault, tracked by identity and history, then synchronized, recovered, retained, or made permanent. The extension provides the user-facing controls; the router performs filesystem operations and coordinates persistence. The graph preserves the documented dashboard and Deleted-Notes capabilities, but their detailed handlers are not fully shown in the sampled excerpts, so only documented or excerpt-supported relationships are connected.
Main entry points: main.py Router CLI · main.js Obsidian extension · sync.py Change synchronization · migration.py Migration and conflicts
Components 16
Intake and Vault UI
- Obsidian extension
extension/main.js - File banner
extension/main.js - Dashboard
extension/main.js - Deleted-Notes UI
extension/main.js - Settings panel
extension/main.js
Router operations
- Router CLI
router/main.py - File intake and lifecycle
router/main.py
Lifecycle engines
- Change synchronization
router/sync.py - Migration and conflicts
router/migration.py - File hashing
router/hashing.py - Source headers
router/header.py
Configuration and state
- Runtime configuration
router/config.py - File records and events
router/database.py - SQLite state store
database/schema.sql
Other components
- Obsidian user
- External files
Connections 26
- Obsidian user → Obsidian extension: uses
README.md - Obsidian user → External files: opens
README.md - Obsidian extension → File banner: renders
extension/main.js - Obsidian extension → Dashboard: provides
README.md - Obsidian extension → Deleted-Notes UI: provides
README.md - Obsidian extension → Settings panel: provides
README.md - Obsidian extension → Router CLI: invokes JSON CLI
README.md - External files → Router CLI: routes open
README.md - Router CLI → File intake and lifecycle: dispatches
router/main.py - Router CLI → File records and events: calls
router/main.py - Router CLI → Runtime configuration: loads
router/main.py - Router CLI → Change synchronization: dispatches sync
router/main.py - Router CLI → Migration and conflicts: dispatches migration
router/main.py - Router CLI → File hashing: uses hashes
router/main.py - Router CLI → Source headers: uses headers
router/main.py - Router CLI → External files: reads and writes
router/main.py - File banner → Router CLI: checks and updates
extension/main.js - Obsidian extension → Router CLI: moves on close
extension/main.js - Runtime configuration → Settings panel: reads plugin data
router/config.py - File records and events → SQLite state store: persists records
router/database.py - Change synchronization → File records and events: updates state
router/sync.py - Change synchronization → File hashing: computes hashes
router/sync.py - Change synchronization → Source headers: preserves headers
router/sync.py - Migration and conflicts → File records and events: updates state
router/migration.py - Migration and conflicts → File hashing: checks external
router/migration.py - Migration and conflicts → Source headers: handles headers
router/migration.py