Marcus Breiden224 downloadsDirect integration with Tomo, the Claude Code agent, for session interaction and automated vault updates.
Three things in one Obsidian plugin:
_instructions.json files Tomo emits, applying batch vault edits with full preview, run logs, and idempotent re-runs.Part of the MiYo family. The plugin is referred to as MiYo Tomo Hashi in the Obsidian community-plugin index and in the settings UI; "Hashi" alone is used as a short form throughout this README and the source. 橋 means bridge.
tldr; you don't need, or can't really use this plugin without MiYo Tomo
Tomo (Claude Code) generates a lot of vault-shaped output — MOCs to create, notes to move, daily logs to update — and Tomo's review step is where you decide what to apply. Hashi is what runs the apply step automated, with two opinions baked in:
applied: true next to each action it commits, so a re-trigger picks up where it stopped — after a crash, after manual cleanup, after a partial cancellation.If you're already using Tomo for inbox processing or daily-note summaries, Hashi turns its review-output into one click.
Hashi itself doesn't have any AI component, it is pure code.
All three components share the plugin process and the settings tab, but nothing else. You can use Hashi for instruction sets without ever connecting to a Tomo container, enable Tomo context without using the chat view, or use any combination independently. See How It Works for the architectural boundary.
A way to talk to Tomo directly from inside Obsidian. It displays the Docker console 1:1 and lets you interact with Tomo while the Tomo Docker container runs in the background — it doesn't manage Tomo, though.
@file references are injected into the session via the file-menu actionA way to let Tomo know what you're working on — which note is open, which text is selected. That lets you ask Tomo things like: "Can you find more material like this in my vault?" Tomo gets the selected text directly as context (so for this part you can circumvent MiYo Kado access control to files), but for anything further Tomo uses Kado again.
127.0.0.1 (default port 23027, configurable). Loopback-only — not reachable from any other host.ideBridgeEnabled: false). Enable it in Settings → MiYo Tomo Hashi → Tomo context and copy the generated token + port into your Tomo settings.x-claude-code-ide-authorization bearer token is checked before the WebSocket handshake completes; wrong or missing token gets HTTP 401.Delegate the tedious work — moving, renaming, and editing notes from your Inbox to the right place — after you've approved the suggestion document. Hashi does the same steps you would, plus a few more via extensible hooks. Approval happens in one of two review surfaces — the Suggestions Editor for /inbox runs, or the Garden-Audit Editor for /garden-audit vault-health scans — both opened by the same Open Tomo editor command:
Cut down on the busywork — with the peace of mind that Hashi does only what you want. (A backup is still recommended 🙂 — shameless plug: my own Obsidian Archivist does exactly that.)
.obsidian/, .git/, .trash/, hooks dir, and traversal-escape paths are denied.cjs files in your vault, full plugin privilege, with an ask-mode disclosure modal| Document | Audience | Content |
|---|---|---|
| Installation | Everyone | Community Plugins, BRAT, manual install |
| Configuration | Vault owners | Settings reference, all three components |
| How It Works | Vault owners | Three-component architecture, layer boundaries |
| Session View | Tomo users | Chat tab, terminal, zoom, file-prefill — branch A |
| Chat | Tomo users | Picker, reconnect schedule, status bar 友 — branch A |
| Context | Tomo users | Enable + Tomo wiring, auth token, connection troubleshooting — branch B |
| Suggestions Editor | Tomo users | Tabbed review of _suggestions.json, worthy/suppressed cards, MOC placement, Save = approve — branch C |
| Garden-Audit Editor | Tomo users | Tier-grouped review of _garden-audit.json, apply/skip targets, candidate chips, Save = approve — branch C |
| Instruction Executor | Tomo users | Modal stages, modes, partial-resume, status bar 橋 — branch C |
| Instruction Fixer | Tomo users | Repair failed/skipped actions and re-run, fail-closed edit gate — branch C |
| Action Reference | Tomo users | All 14 action kinds with idempotency rules — branch C |
| Hooks | Power users | .cjs hook authoring, policy, disclosure modal — branch C |
| Run Log | Vault owners | Log format, retention, hook output — branch C |
| Development | Contributors | Build, test, lint, architecture, test vault |
| Dependency Security | Contributors / reviewers | Supply-chain advisories, bundle-level reachability, overrides rationale |
100 Inbox)tomo-hashi-run-log_…md) afterwards
Screenshot — progress view with rows partway through, glyphs animating, sticky error banner.
Screenshot — summary view with stats line and View errors button.
Screenshot — hook disclosure modal asking the user whether to enable a hook (Disable focused as safe default).
move_note.git restore-style suggestion in the summary.isDesktopOnly: true because of Docker socket and Node fs use. Mobile would need a non-Docker transport or drop the Tomo Chat interface. Let me know.isDesktopOnly: true). macOS is the primary, verified platform; Linux is experimental and Windows is user-contributed — Hashi runs the same code on all three (no per-OS gating), but only macOS is regularly exercised. On any OS, Docker reachability is the real gate, surfaced as a named error if the daemon or socket isn't available.chosenInstanceName is replicated by Sync. On a second device, the auto-attach may land on a same-labelled but unrelated container. Hashi shows a Notice naming the instance it just attached to so a wrong-container connect is detectable.Hashi is part of MiYo, a small family of Obsidian-adjacent tools focused on giving you control over what your assistants can see and do.
_instructions.json Hashi runs.Scope boundary: Kado is the only external-inbound vault surface in the MiYo family. Hashi's Tomo context bridge is an opt-in loopback-only inbound surface (127.0.0.1, disabled by default) for its single consumer — Claude Code in your local Tomo container. It is not reachable from any other host and exposes no vault read/write capability (that's Kado's domain).
See PRIVACY.md for the full statement. Short version: nothing leaves your machine. No telemetry, no crash reports, no third-party services.
If MiYo Tomo Hashi is useful and you want to help me keep building, you can support development via:
Issues and pull requests are also very welcome.
See the Development Guide for build, test, and lint commands. Short version:
main with a descriptive name (fix/<thing>, feat/<thing>).npm run build, npm test, npm run lint.main and reference the issue.For security issues, please do not open a public issue — email [email protected] instead.