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 git and openssl.
  • 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.selfhost

Fill in your settings

Run this command three times. Keep each result: you need two different keys and a database password.

openssl rand -hex 32

Open .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:8080 if 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.selfhost safe and out of Git. You need the original KEK_ROOT to 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 -d

The 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

  1. Open your BASE_URL followed by /get-started. For a local setup, go to http://localhost:8080/get-started.
  2. Sign in with the Things Cloud account you put in .env.selfhost.
  3. 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/mcp

Reach 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 --build

Read 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.sql

Keep .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.