Getting Started
Install kutl, create a space, and start syncing files between machines. This takes about five minutes.
1. Install kutl
brew install kutl/tap/kutlThe source option requires a Rust toolchain. kutl-relay is included in the same package.
2. Start a relay
The relay is the server that coordinates sync between participants. For local development, start one with authentication disabled:
KUTL_RELAY_REQUIRE_AUTH=false kutl-relayThe relay listens on ws://127.0.0.1:9100/ws by default. This is also the default relay URL that kutl init and kutl join connect to. See Self-Hosting a Relay for production deployment.
3. Initialize a space
A space is a named sync context: a directory whose contents sync with the relay. Create one inside your project:
cd /path/to/your/project
kutl init --name my-projectThis creates a .kutlspace file (team config, safe to commit) and a .kutl/ directory (local state, gitignored). If you're inside a git repo, kutl creates a subfolder to keep synced documents separate from your code.
The --name flag registers a human-readable name with the relay. Other users will use this name to join. If you omit it, a name is generated automatically.
4. Start the daemon
The daemon watches your files and syncs changes with the relay in the background:
kutl daemon startYou can also run it in the foreground with kutl daemon run to see logs directly. Check status with kutl daemon status.
5. Join from another machine
On a second machine (or in a second directory), join the space by name:
kutl join my-project --relay ws://<relay-host>:9100/ws
kutl daemon startIf the relay is running on localhost, you can omit the --relay flag since it defaults to ws://127.0.0.1:9100/ws.
6. Edit and sync
Create or edit files inside the space directory. Changes sync automatically through the daemon. Any editor, script, or agent that reads and writes files becomes a sync participant. No commits, no pushes, no manual merges.
One-shot sync
If you don't want a background daemon, you can sync once and exit:
kutl syncThis pushes local changes, pulls remote changes, and exits. Useful for CI pipelines or scripts.
Next steps
- Concepts : how spaces, relays, and CRDTs fit together
- CLI Reference : every command and flag
- Self-Hosting a Relay : production deployment with authentication