New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

shared-things-daemon

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

shared-things-daemon

Sync Things 3 projects between multiple macOS users

latest
Source
npmnpm
Version
2.0.0
Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

npm version license node version

shared-things

Sync a Things 3 project between multiple macOS users

Stop duplicating todos manually. shared-things keeps your team's Things 3 project in sync via a lightweight self-hosted server—perfect for shared shopping lists, family tasks, or team todos.

Quick Start

Client (each user)

npm install -g shared-things-daemon
shared-things init

That's it. Follow the prompts.

Features

  • 🔄 Real-time sync - Changes propagate within 30 seconds
  • 🏠 Self-hosted - No cloud subscription, host on your own server
  • 👥 Multi-user - Each person gets their own API key
  • 🤫 Background daemon - Auto-starts on login, runs silently
  • 🛠️ Interactive CLI - Easy setup wizard for configuration

Prerequisites

  • macOS with Things 3 installed
  • Node.js >= 18
  • A server running shared-things-server (see Server Setup)

Usage

Interactive Mode

shared-things init
? Server URL: https://things.yourdomain.com
? API Key: ****
? Project name in Things: Shared Project
? Things auth token: ****

Note: The Things project must be empty when you run init.

Things auth token: Required for syncing updates to existing todos. Find it in Things → Settings → General → Things URLs → Enable Things URLs.

After Setup

shared-things start     # Start daemon (auto-runs on login)
shared-things status    # Check sync status
shared-things logs -f   # Follow sync logs

All Commands

CommandDescription
initSetup wizard
startStart launchd daemon (auto-starts on login)
stopStop launchd daemon
statusShow sync status & last sync time
syncForce immediate sync
logs [-f]Show logs (-f to follow)
conflicts [--all]Show conflict history
repairDiagnose state issues (no auto-fix)
reset --localClear local state
reset --serverClear server data for this user
doctorComprehensive health check

Server Setup

One person hosts the server. Everyone else just needs an API key.

# Install
npm install -g shared-things-server

# Create a user (generates API key)
shared-things-server create-user
# → User "alice" created. API key: sk_abc123...

# Start server
shared-things-server start -d --port 3334

Server Commands

CommandDescription
start [-d] [-p port]Start server (-d for background)
stopStop background server
statusShow server status
logs [-f]Show logs (-f to follow)
create-userCreate user and generate API key
list-usersList all users
delete-userDelete a user
resetDelete all todos (keeps users)
Production Deployment

systemd Service

sudo tee /etc/systemd/system/shared-things.service << 'EOF'
[Unit]
Description=shared-things sync server
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/shared-things-server start --port 3334
Restart=always

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable --now shared-things

HTTPS with Caddy

things.yourdomain.com {
    reverse_proxy localhost:3334
}

What Syncs

SyncedNot Synced
Todo title, notes, due date, tags, statusChecklist items
Headings, Areas

Note: The project must exist in each user's Things app. Only items within that project sync.

How It Works

Things User A ←→ Daemon A ←→ Server ←→ Daemon B ←→ Things User B

Each daemon polls Things every 30 seconds via AppleScript, pushes changes to the server, and pulls updates to apply via Things URL Scheme. Server is the single source of truth (last write wins).

Development

git clone https://github.com/yungweng/shared-things.git
cd shared-things
pnpm install
pnpm build

Contributing

Issues and PRs welcome! See open issues.

Author

Maintained by @yungweng

License

MIT

Keywords

things

FAQs

Package last updated on 03 Jan 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts