Sign inSign up

ppatlabs/obsidian-tools

By ppatlabs

•Updated about 21 hours ago

BRAIN vault tooling: the in-cluster git committer, and future Mac-side replication CLI

Image
0

10K+

ppatlabs/obsidian-tools repository overview

⁠obsidian-tools

Code for BRAIN: a git-backed Obsidian vault used as a shared brain — the store of the owner's knowledge and ideas, written mostly by AI agents, read by the same agents and a human. The design of record lives beside this file: USE_CASES.md⁠ (the outcomes), DESIGN.md⁠ (the pillars, invariants and glossary), and ROADMAP.md⁠ (the work and its state), with the decision records under docs/adr/⁠.

⁠Status

Two components are shipped and running (v0.4.0 released; later fixes are merged and ride the next release — see ROADMAP.md⁠ for the delivery gap and everything below):

  • The git committer (obsidian-tools commit) — runs in-cluster on a schedule, turning the vault volume into git history pushed to two remotes. It never authors content.
  • local-replicator (obsidian-tools replicate + obsidian-tools drain) — runs on the operator's Mac under launchd, keeping the device-facing iCloud vault current from git, one-way and non-destructively: device-side drift is captured to a durable local spool before anything is overwritten. The drainer's destination is a deliberate stub (discard) until the work queue exists.

Still to build, each specified in the design and tracked on the roadmap: the work queue and its three processors (batch-processor, promotion-processor, drift-processor), the admission validator, and the lint pass.

⁠Documentation

WhereWhat
USE_CASES.md⁠ · DESIGN.md⁠ · ROADMAP.md⁠Outcomes and acceptance criteria · pillars, invariants and the settled glossary · all the work in one place
docs/adr/⁠One decision per record: context, decision, alternatives, consequences
docs/VERIFICATIONS.md⁠Every control's proving injection and answerable-by-doing check, past and pending
docs/⁠The research canon behind the design, and the operator runbooks (local-replicator.md, settings-lock.md, gui-access.md)

⁠Development

Requires mise⁠ (pins exact tool versions — see mise.toml⁠) and uv⁠ for Python dependency management.

mise install
mise exec -- uv sync --all-extras
mise exec -- pre-commit install --install-hooks

Run the checks locally:

mise exec -- uv run ruff check .
mise exec -- uv run ruff format --check .
mise exec -- uv run pyright
mise exec -- uv run pytest
pre-commit run --all-files

CI runs the same checks plus an offline link-and-anchor check — see .github/workflows/lint.yaml⁠ and .github/workflows/test.yaml⁠.

⁠Releases

Versioned via release-please⁠ — merging a release PR cuts a tagged release and updates CHANGELOG.md automatically. Don't hand-edit CHANGELOG.md.

⁠Conventions

Runtime code is Python, managed with uv; shell is for CI/ops only, never runtime. The full working conventions for this repository — an agent's orientation included — are in CLAUDE.md⁠.

Tag summary

Content type

Image

Digest

sha256:6a7f73e44…

Size

74.3 MB

Last updated

about 21 hours ago

docker pull ppatlabs/obsidian-tools:git-cf04619