mote

Mote 0.1

Run it locally. Change it live.

Mote is a working prototype: an AppKit status item and panel, a WKWebView, a local Vite/Svelte workspace, and a typed bridge to bounded native capabilities.

Host AppKit · WKWebView Surface Svelte 5 · Vite Bridge Typed native calls Config Local custom layer

Run the prototype

Requirements: macOS 14+, Xcode command-line tools, and Bun. Clone the source, install the editable surface, then run the native host.

git clone https://github.com/acoyfellow/mote
cd mote/workspace
bun install

cd ..
./scripts/run.sh

Click the mote in the menu bar. Right-click it for recovery controls. Edit workspace/src/App.svelte while Mote is running; Vite HMR updates the panel without rebuilding Swift.

The workspace is the product surface.

A Mote panel is an ordinary local Svelte project. There is no proprietary document format and no cloud round-trip in the edit loop.

workspace/
├── package.json
├── vite.config.ts
└── src/
    ├── App.svelte       # interface
    ├── style.css        # visual language
    └── lib/native.ts    # typed host bindings
Local edit loop

After dependencies exist locally, editing the panel does not require the network.

Try it Turn Wi‑Fi off, save SvelteKnown limit New installs still fetch dependencies

The native bridge

The Swift host injects one small Promise-based function into the webview. The Svelte SDK wraps command strings with typed methods.

import { native } from "./lib/native";

const status = await native.machinectl.status();

await native.machinectl.action("restart", "core");
await native.reachability.start(8 * 60 * 60);
NamespaceCommands
appinfo, configuration, open workspace, open logs
machinectlstatus, start, stop, restart
reachabilitystatus, start, stop
maintenancereport, cleanup
authResourcestatus, refresh, recover
remoteCoordinatoroverview, acknowledge, steer, open

Custom configuration stays outside source.

Machine-specific resource names, endpoints, CLI paths, and private capability wiring live in a local runtime layer outside the repository and app bundle.

~/.mote/config/custom.json
~/.mote/scripts/

Public source uses only generic capability names. The custom layer can point to any local implementation without changing the Svelte API or publishing private details.

Architecture

Native hostAppKit · WKWebViewWindows, permissions, bounded system access
typed messages
Local surfaceSvelte 5 · Vite HMRInterface, state, workflows
optional services
CloudflareAccess · Durable Objects · AI GatewayLogin, routing, model calls

End of current docs

Read the source →