Warren Sync

Keep Warren in step across every Mac and share live project views with clients — all hosted on your own server, under your control. Warren Sync is a self-hosted PHP/MySQL server that runs on any shared hosting provider.

🔑
Role required: Admin — Only Admins can configure Warren Sync settings and manage server users.

What Warren Sync gives you

☁️ Automatic sync — Warren pushes a full snapshot after every save and pulls on launch
💻 Multi-device — multiple Macs share the same workspace
🔗 Client share links — password-protected, expirable project URLs on your domain
👥 User management — create accounts, assign roles, reset passwords
📋 Audit log — every sync push/pull, login, and share view is recorded
⚠️
Warren Sync uses a last-write-wins strategy (v1). Warren pushes a full snapshot of its entire DataStore JSON payload to the server after every save. It pulls the latest snapshot on launch. There is no real-time or operational transform — just full serializable state.

Server requirements

The sync server is a self-hosted PHP application. You'll need:

No Composer, no Node, no build tools — just upload and go.

Install the sync server

1

Create a database

In cPanel / phpMyAdmin (or your host's database tool), run:

CREATE DATABASE warren_sync CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'warren_user'@'localhost' IDENTIFIED BY 'strong_password_here';
GRANT ALL PRIVILEGES ON warren_sync.* TO 'warren_user'@'localhost';
FLUSH PRIVILEGES;
2

Upload the files

Upload the warren-cloud-sync/ folder to your web server root, e.g. public_html/warren-sync/.

3

Configure

Duplicate the sample config:

cp config.sample.php config.php

Open config.php and fill in your values:

define('DB_HOST',    'localhost');
define('DB_NAME',    'warren_sync');
define('DB_USER',    'warren_user');
define('DB_PASS',    'strong_password_here');

// Generate a secret: php -r "echo bin2hex(random_bytes(32));"
define('JWT_SECRET', 'paste_64_hex_chars_here');

// The public URL of this folder (no trailing slash)
define('APP_BASE_URL', 'https://yourdomain.com/warren-sync');

// Optional: set your from-address to enable password reset emails
define('MAIL_FROM', 'noreply@yourdomain.com');
4

Run the installer

Open in your browser:

https://yourdomain.com/warren-sync/install/install.php

The wizard will verify requirements, create database tables, create your admin account, and display your Workspace ID — copy this, you need it in the Warren app.

5

Secure the installer

Delete or password-protect install/install.php once setup is complete. Leaving it accessible is a security risk.

💡
Nginx? If you're on Nginx instead of Apache, add the configuration from the warren-cloud-sync/README.md to your server {} block.

Connect Warren

Once the server is set up, connect Warren on each Mac:

1

Open Settings → Warren Sync

Press ⌘, to open Settings, then navigate to Warren Sync.

2

Enter your server details

  • Server URL — your APP_BASE_URL (e.g. https://yourdomain.com/warren-sync)
  • Workspace ID — the UUID from the installer
  • Email / Password — your Warren Sync admin credentials
3

Enable sync

Toggle Warren Sync On. Warren will pull the latest snapshot immediately and push automatically after every save.

Multi-device sync

Multiple Macs can push and pull from the same workspace. Each device is identified by its device name and app version. The server keeps a rolling 30-snapshot history per workspace, automatically pruning older snapshots.

ActionWhat happens
Save in Warren A full snapshot of your DataStore is pushed to the server immediately.
Launch Warren Warren pulls the latest snapshot from the server and merges it into the local store.
Snapshot history The server retains the last 30 snapshots. Older ones are pruned automatically.
⚠️
Conflict resolution: Warren Sync uses a last-write-wins strategy. If two devices make changes independently, the most recent push to the server becomes the authoritative state. To avoid losing work, let one device finish saving before starting work on another.

Share read-only project views with clients via URLs hosted on your own domain. Each link can be password-protected and given an expiry date.

Create a share link

  1. In Warren, open the project you want to share.
  2. Click the Share button (or press ⌘⇧S).
  3. Set an optional password and expiry date.
  4. Click Generate Link and copy the URL to send to your client.

Manage share links

Go to Settings → Warren Sync → Share Links to view, edit, or revoke existing links. Revoked links immediately return a 404 to visitors.

💡
Share links are read-only. Clients can view project progress, phases, and tasks — but cannot edit anything or see internal comments.

User management

Admins can create and manage team members on the sync server. Each user gets their own login and access to shared workspaces.

Roles

RolePermissions
Admin Full access: create/edit/delete users, manage workspaces, view audit log, all sync operations.
Member Push and pull snapshots, create and manage share links for their workspaces.

Create a user

Go to Settings → Warren Sync → Users → click Add User. Enter their name, email, password, and role. They can then log in from any Mac using those credentials.

Reset a password

Admins can force-reset any user's password without knowing the current one. Users can also request a password reset email (valid for 1 hour) or change their own password if they know the current one.

Security

Troubleshooting

Sync isn't working

Share links return 404

Forgot admin password

Use the password reset flow: go to the login page → Forgot password? → enter your email → check for a reset link (valid 1 hour). If email isn't configured, an admin with database access can reset it directly in the users table.