Run Plus on your own server
Connect one Things account to AI apps using Plus on a computer or server you manage.
Community Edition lets you run Plus for your own Things account. You manage the server, updates and backups. There is no subscription or trial to set up.
What you need
- A computer or server that stays on while you use Plus.
- Docker with Compose, plus
gitandopenssl. - Your Things Cloud email and password.
- A public HTTPS address if you want to use Claude or ChatGPT. See how to set one up.
Get the files
Clone the Plus source code and copy its settings file:
git clone https://github.com/TobiasPrt/plus-for-things-3.git
cd plus-for-things-3
cp .env.selfhost.example .env.selfhostFill in your settings
Run this command three times. Keep each result: you need two different keys and a database password.
openssl rand -hex 32Open .env.selfhost and fill in these values:
BASE_URL=http://localhost:8080
KEK_ROOT=<first result>
JWT_SECRET=<second result>
SIGNUP_ALLOWED_EMAILS=you@example.com
SELF_HOSTED=1
POSTGRES_PASSWORD=<third result>- BASE_URL is your server's address. Use
http://localhost:8080if you connect from the same computer. For Claude or ChatGPT, use your public HTTPS address. - SIGNUP_ALLOWED_EMAILS must be your one Things Cloud email. Plus accepts only that account.
- SELF_HOSTED must stay
1. - KEK_ROOT, JWT_SECRET and POSTGRES_PASSWORD are private. Keep
.env.selfhostsafe and out of Git. You need the originalKEK_ROOTto read a database backup.
Choose your final BASE_URL before connecting an AI app. If you change it later, add Plus again in each app.
Start Plus
From the folder you cloned, run:
docker compose -f deploy/compose.selfhost.yml up -dThe first start builds the app and creates its database. This can take a few minutes. Open http://localhost:8080/healthz to check that it is ready.
Sign in with Things
- Open your
BASE_URLfollowed by/get-started. For a local setup, go tohttp://localhost:8080/get-started. - Sign in with the Things Cloud account you put in
.env.selfhost. - Plus opens your account page. There is no plan step.
Plus uses your password to get an access key from Things Cloud, then discards the password. Read how sign-in and storage work.
Connect your AI app
Your connector address is your BASE_URL followed by /mcp. For a local setup, that is http://localhost:8080/mcp.
Follow the guide for Claude, Claude Code, ChatGPT or Cursor. Use your server's address wherever a guide shows the Plus connector address.
For Claude Code on the same computer, you can add it with:
claude mcp add --transport http --scope user plus-for-things-3 http://localhost:8080/mcpReach your server from an AI app
The included setup listens only on the server's own computer. This works for Claude Code and Cursor running there. Claude and ChatGPT connect from the internet, so they need a public HTTPS address.
- At home: Put a Cloudflare Tunnel on the same computer and point it to
http://localhost:8080. Use a domain you own. - On a cloud server: Put an HTTPS reverse proxy, such as Caddy, in front of
http://localhost:8080.
Set BASE_URL to that HTTPS address. Then run docker compose -f deploy/compose.selfhost.yml up -d again. Keep access to the server and your .env.selfhost file private.
What you get
You can use the Things connector with one account. Community Edition has no payments, product-news emails or daily fair-use limits. If the first load takes time, check the progress page or try your AI app again later; it will not send you a data-ready email.
Your server talks to Things Cloud and to the AI apps you connect. It does not send your tasks, error reports or usage data to the hosted Plus service. The AI app you use can see the task content you ask it to read.
Update Plus
From the folder you cloned, get the latest code and rebuild:
git pull
docker compose -f deploy/compose.selfhost.yml up -d --buildRead the changelog for changes that may affect you.
Back up your data
Your Things tasks remain in Things Cloud. The local database also holds an encrypted copy and your Plus settings. Back up its Docker volume (plus-for-things-3_db-data) or make a database dump:
docker compose -f deploy/compose.selfhost.yml exec -T db pg_dump -U plus plus > plus-backup.sqlKeep .env.selfhost with your backup. Without its KEK_ROOT value, you cannot read the encrypted data.
Licence
The Business Source License 1.1 lets you run one instance for your own use with your own Things account. You can read, change and build the code, but cannot offer your instance to other people. Each release becomes available under Apache 2.0 after four years. The licence file has the binding terms.
Need help? Open an issue on GitHub.