License and troubleshooting

SmartDecision needs a license key to run. The key is checked on your server only. The app never contacts us, so it works without internet access.

Entering a key

Your license key is in your welcome email. It is one long line that starts with SD1.. The same key also downloads SmartDecision and its updates.

  • On first start, SmartDecision shows only a screen to add the key. An admin pastes it there. Other members are asked to get an admin to add it.
  • Later, an admin replaces it in Settings → License → Replace license key.
  • On the server, if you installed with --license=KEY, the key is set as SMARTDECISION_LICENSE in ~/.smartdecision/.env. It then overrides the key in the app, and Settings shows that it is set on the server. To change it, edit .env and restart:
Shell
cd ~/.smartdecision
sudo docker compose up -d

An admin can also remove the key in Settings. Without a key, SmartDecision shows only the key screen and the Resolve API stops answering. Adding a key restores everything at once.

No key yet? Request a trial, which is a license key with an end date, or see Pricing.

Limits

A key can limit the number of users and decisions. Settings → License shows your limits and your usage.

  • Users count active members plus pending invitations.
  • Limits only stop you adding users and decisions. Nothing that exists is ever blocked by a limit.
  • At a limit you see "Your <plan> license allows 10 users. Contact us to raise the limit." (or decisions). Email support to change your plan.

Renewing

When you renew, you get a new key with a later end date. An admin adds it in Settings → License → Replace license key. A new key restores everything at once, whatever stage the old one had reached. There is no restart.

Every member sees a notice in the 30 days before the license expires.

Expiry stages

An expired license doesn't stop SmartDecision at once. It steps down in stages, counted in observed days: days on which SmartDecision was running and saw a new calendar day (UTC). Days while the server is off don't count. Moving the server clock doesn't change the count.

Stage When The app Resolve API
Active Until the end date Everything works. A notice shows in the last 30 days. Works
Grace Observed days 1 to 14 after expiry Everything works. A banner counts down. Works, with the SmartDecision-License header
Read-only Observed days 15 to 30 You can read, but not change. See Read-only. Works, with the header
Cutoff Observed day 31 on Still read-only. 402 License expired

Trial keys can set shorter stages, so that read-only and cutoff come a few days after the trial ends. The banners always show the days left for your key.

The Resolve API reports the stage in the SmartDecision-License response header. See License header.

What works in read-only

From the read-only stage on, and also after cutoff, you can still:

  • open and read everything: projects, decisions, tests, members and the activity log,
  • run decision tests,
  • remove members, revoke invitations and revoke secret keys, so you can always take access away,
  • update your own account,
  • add, replace or remove the license key.

Creating or changing projects, decisions, tests, invitations and secret keys is refused until a new key is added. The Resolve API keeps answering until cutoff.

Messages and banners

In the app, a refused action shows the message from the server. Here is what each one means.

You see It means What to do
"The license expires on <date>, in N days." The license is active and ends within 30 days. Renew, and add the new key when it arrives.
"The license expired on <date>. Editing stops in N days and decisions stop resolving in M days." Grace stage. Everything still works. Renew and add the new key before editing stops.
"The license has expired, so this workspace is read-only. Decisions stop resolving in N days." Read-only stage. The Resolve API still answers. Renew and add the new key before decisions stop resolving.
"The license has expired, so this workspace is read-only and decisions no longer resolve." Cutoff. The Resolve API answers 402 License expired. Renew and add the new key. Everything comes back at once.
"This workspace needs a license key. An admin can add one." No key is installed. An admin adds the key from your welcome email.
"The installed license key is not valid. An admin can replace it." The stored key failed its check. An admin pastes the key again from the welcome email.
"That key is not valid. Check that it was copied completely." The key you pasted is incomplete, changed, or not a SmartDecision key. Copy the whole key again. Spaces and line breaks from pasting are fine.
"The license is set on the server with SMARTDECISION_LICENSE and is not valid." The key in ~/.smartdecision/.env is wrong. Fix it in .env, then run sudo docker compose up -d there.
"Your <plan> license allows N users." (or decisions) You reached a limit of your key. Remove unused members or invitations, or contact us to raise the limit.
"The server clock moved ..." or "The server clock ... is behind the last time SmartDecision saw" Shown to admins after the server's clock changed. The expiry count is not affected. Check the server's time settings. Nothing to do in SmartDecision.

If the end date was wrong, or you need more time, the only fix is a new key with a later end date. Email support.

Troubleshooting

AI is unavailable

Describe a policy is turned off when SmartDecision can't reach the AI. SmartDecision checks this by calling LLM_URL/models. Common causes:

  • You installed without AI. Run the installer again with --llm=builtin or --llm=external.
  • The built-in AI container is not running. Check with sudo docker compose ps in ~/.smartdecision, and read its output with sudo docker compose logs llm.
  • The server has less memory than the built-in AI needs. See Requirements.
  • Your own AI server is unreachable from the container, or its key is wrong. Use host.docker.internal instead of localhost for a server on the same host. Change the settings in .env and run sudo docker compose up -d.

Resolve requests fail

  • 400 Invalid Client Secret: send the key itself in Authorization, without Bearer. Check that it wasn't revoked.
  • 404 Decision not found: check the id, and that a project-scoped key belongs to the decision's project.
  • 403 Inactive decision: set the decision to active in its details.
  • 402: see Expiry stages.

The full list is in Errors.

Lost admin password

On the server, open a new shell and run:

Shell
smartdecision admin cpass

The app doesn't open

  • Check that the containers are running: sudo docker compose ps in ~/.smartdecision.
  • Check that your firewall allows port 8080.
  • Read the app's log in ~/.smartdecision/all.log.

Lost license key

The download portal at get.smartdecision.io can resend it.

Contact support

Email support@smartdecision.io for help with installing, upgrading, your license, or a bug. Tell us what you were doing, the exact message you saw, and include the relevant lines from ~/.smartdecision/all.log.

For prices and plans, see Pricing. To try SmartDecision, request a trial.