README file from
GithubMarkway for Obsidian
Markway for Obsidian syncs Markdown notes with Apple Journal through Markway.app.
It is the Obsidian adapter for the larger Markway project: a gateway between Apple services and Markdown. The plugin watches eligible Markdown files, asks the native Markway app to push or pull Journal entries, and keeps sync metadata in plugin data instead of cluttering note frontmatter.
Important Security Model
The plugin does not need Full Disk Access.
Apple Journal data lives in protected macOS group containers. Instead of asking users to grant Obsidian broad permissions, the plugin communicates with Markway.app through a local bridge inside the current vault:
<vault>/.obsidian/plugins/markway/bridge
Markway.app holds the macOS permissions and performs Journal operations. The plugin does not expose a network socket, does not import Node's fs module, and does not grant Obsidian access to Apple's Journal container. The plugin writes request files through Obsidian's vault adapter, and Markway.app reads those files from the vault path selected by the user.
Requirements
- Obsidian desktop.
- Markway.app installed and configured.
- A local Obsidian vault.
- macOS with Apple Journal available.
The plugin is desktop-only because the current Journal bridge depends on macOS.
Installation
For beta releases:
- Install and open Markway.app.
- Choose your vault in Markway.app.
- Grant Full Disk Access to Markway.app, not Obsidian.
- Download the plugin release files:
main.jsmanifest.jsonstyles.css
- Place them in:
<vault>/.obsidian/plugins/markway/
- In Obsidian, enable Community plugins and enable Markway.
Settings
The plugin supports both Obsidian's legacy settings renderer and the newer declarative settings API.
Main settings:
- Automatic sync: push/pull after edits and bridge events.
- Debounce: delay before automatic push.
- Vault path override: fallback when Obsidian cannot expose a local path.
Journal settings:
- Journal folder: default folder for imported Journal entries.
- Rules: filter which Markdown files should sync.
- Delete Journal entries when synced Markdown files are deleted.
- Delete Markdown files when synced Journal entries are deleted.
- Properties: frontmatter templates generated from Journal data.
- Add title as heading: optionally render Journal title as the first Markdown heading.
Default rule:
folder is Journal
Template Properties
Journal template properties let you generate frontmatter without deleting unrelated user properties.
Example:
music = {{music|map:item => item.title|wikilink}}
This can produce:
music:
- "[[Sahiba]]"
- "[[How Do You Know]]"
Supported variables include:
titlecontentcreatedmodifiedmusic
More attachment variables will be added as Markway decodes them.
Commands
The plugin registers commands for:
- Push current file to Journal.
- Pull current file from Journal.
- Sync Journal now.
- Run diagnostics.
Command names are intentionally Obsidian-facing; low-level Journal access stays in Markway.app.
Development
Install dependencies:
npm install
Run checks:
npm run lint
npm run build
npm test
During development:
npm run dev
The source is organized under:
src/bridgesrc/journal-templatesrc/rulessrc/settingssrc/sync
Root files such as src/sync-utils.ts are compatibility barrels for stable imports.
Release
The plugin release workflow is:
.github/workflows/release.yml
Create a tag:
git tag 0.1.2
git push origin 0.1.2
The workflow builds and publishes a draft GitHub release containing:
main.jsmanifest.jsonstyles.css
What To Commit
Commit:
.githubsrcteststyles.cssmanifest.jsonversions.jsonpackage.jsonpackage-lock.jsontsconfig.jsoneslint.config.mtsesbuild.config.mjsversion-bump.mjsREADME.md
Do not commit:
node_modulesmain.jsdata.json- source maps
.DS_Store
Disclaimer
Markway is not affiliated with Obsidian or Apple. Apple Journal support depends on Markway.app and its reverse-engineered Journal bridge.