@mymehq/sync
v0.11.0
Published
Headless engine that keeps one or more local folders two-way synced with a Myme server. Ships the `myme-sync` CLI; the engine is also a library consumable over its loopback HTTP control surface.
Readme
@mymehq/sync
Headless engine that keeps one or more local folders two-way synced with a Myme server. Watches the disk, listens to the server's SSE stream, reconciles both directions with conflict detection.
The engine is UI-agnostic — a CLI ships in this package and drives the engine over a loopback HTTP control surface; menu-bar and desktop UIs use the same surface.
Install
npm install -g @mymehq/syncQuick start
myme-sync start <folder> --url <api-url> --key <api-key>Subsequent roots can be added at runtime:
myme-sync roots add <path>
myme-sync status--daemon writes a launchd plist (macOS) so the engine survives terminal sessions. Run myme-sync --help for the full command list.
Mapping rules
<root>/.myme/mappings.json (optional) decides what type each file becomes when synced. Resolution order, first match wins:
- Frontmatter
type:if present (text files only) - User rules from
mappings.json - Built-in mime defaults (
image/*→core.file.image, audio, video) - Fallback:
core.file
Example — promote any .md file in Notes/ to core.note, populating title from the first H1, body from everything after the frontmatter, and tags from the frontmatter:
{
"rules": [
{
"id": "notes",
"match": { "glob": "Notes/**/*.md" },
"transform": {
"type": "core.note",
"tier": "library",
"propertyExtractors": [
{ "kind": "first-h1", "into": "title" },
{ "kind": "body-after-frontmatter", "into": "body" },
{ "kind": "frontmatter-key", "key": "tags", "into": "tags" }
]
}
}
]
}Match predicates: glob, mime, frontmatter (key/value match, or true for presence). All present predicates AND together.
Configuration
The agent merges configuration from three sources (highest priority first):
- CLI flags —
--url,--key,--types - Environment variables —
MYME_API_URL,MYME_API_KEY - Config file —
~/.myme/sync.json
Requires @mymehq/sdk@^4.0.0. Items are stamped with origin: "user"; the API key should be issued from a credential with default_origin: "user".
More
Full per-root layout, mapping internals, the loopback HTTP control surface, and conflict-resolution semantics live in the repository.
