Licensee, License
Who the key is for, with its seat if it has one, such as Acme Corp · seat 7, and its license ID
User guideWayseer 0.28.3Contents
Most of Wayseer is free. One license key unlocks everything else. Every key Wayseer issues, personal, business or a 30-day trial, unlocks all of it at once; there is nothing to buy part by part.
Free, with no key:
With a key, all of these together:
Inside a key these are named kubernetes, sql, modules, windows and integrations, and the messages below and the license panel use those names.
A key is one line of text that starts with WAYSEER-1.. It names you as the licensee and lists the modules and features it unlocks. Wayseer checks it on your machine against a signature built into the app. It never contacts a server to check a key, so it works with no network at all.
Without a key, a paid module in your config doesn't start. It shows as locked in the sources panel (S) and the status strip, and the status line says so once, as Wayseer starts:
k8s is locked: no license key unlocks kubernetes
An external module needs a key that unlocks modules, shown as external modules in >license. Without one its program never starts, and the line says:
widgets is locked: external modules need a license key
Everything else runs as usual. Space or a click on a locked source, in the sources panel or the status strip, says the same again and opens the license panel.
A key never stops working. It covers every release of Wayseer built on or before its updates until date, which is usually a year after it was issued. Keep using a release it covers for as long as you like. A release built after that date needs a renewed key. Some keys cover every release.
The date is compared with the day the release was built, which is stamped into the app. It's never compared with your computer's clock. Both dates are UTC calendar days, and a release built on the key's date is covered.
A key too old for the release you run is refused as Wayseer starts. The paid modules stay locked, the free modules run as usual, and the status line names both dates:
the license key in ~/keys/wayseer.key was refused: the key is older than this release: it covers
releases built by 2027-10-01, and this one was built 2027-11-02; k8s is locked
A build you made yourself from source has no date stamped in, and every key covers it.
When a newer release is out, Wayseer says once whether your key covers it (newer releases).
>license shows the key in use:
Licensee, License
Who the key is for, with its seat if it has one, such as Acme Corp · seat 7, and its license ID
Type
personal · non-commercial use, business or trial; a key issued before types has none
Unlocks
Each module it unlocks, with the instances of it in your config, or not configured; then each feature, such as windows · more than one window or integrations · control, MCP and the language model
Issued
The day the key was issued
Covers
The releases the key covers: those built by its date, or every release
This release
The day this release was built, or that it's a development build
Not after
A date some keys carry, which Wayseer shows but doesn't enforce
Key from
The file named by license_file, or license.key, stored by >license.add
Refused
Why the key was refused, if it was
Locked
Each instance still locked
Every type of key unlocks the same. A business key is one seat; its seat label is only for you, and Wayseer never counts seats.
With no key, it says none and lists what is locked. Ctrl+V (⌘V on macOS) adds the key you copied, and Esc closes the panel.
Beneath the rows, Third-party software lists the license of each part of Wayseer made by others, covered below. T switches between it and the end-user license. ↑ and ↓ or the mouse wheel scroll either, and Home and End jump to the start and the end.
There are two places Wayseer looks for a key:
>license.add stores the key you copied in license.key, beside your other state files. Only you can read it. Wayseer checks the key first, so a key it refuses is never stored. Then it asks you to accept the end-user license the key is governed by: Y accepts it and stores the key, T reads the license and returns to the question, and Esc cancels, storing nothing. Closing the panel or the window cancels too. To type the key instead, give it: >license.add key=WAYSEER-1.…. A key pasted straight into the palette is read the same way, and is never sent to the language model. >license.remove deletes license.key and nothing else.license_file: in your config names a file holding the key, for example one your organization hands out:``yaml license_file: ~/keys/wayseer.key ``
The path is a full path or starts with ~/. Wayseer only reads this file. It never changes or deletes it.
If config names a file, that key wins and a stored key is ignored, so a pasted key never hides the one your config names. >license says which key is in use. If the named file is missing or its key is refused, the paid modules stay locked until you fix it, and the free modules run as usual.
A key that is refused is reported with the reason, such as a signature that doesn't match, and never with the key itself.
An organization that hands out a key with license_file accepts the end-user license by deploying it. Name the version it accepts beside the key:
license_file: ~/keys/wayseer.key
license_terms_accepted: 2026-10-05
With this release's version there, Wayseer says nothing more. With none, or an older one, it tells you once per version, in the status line:
this key is governed by the Wayseer end-user license 2026-10-05; read it with >license.terms
The key works either way, and the notice never asks anything. A value that isn't a version, such as soon, is a config error naming its line. A changed value applies when the config is reloaded.
A new key applies without a restart. While the config is watched, Wayseer reads the key's file again each time it's saved: the file license_file names, or else license.key. Changing license_file reads the file it now names.
k8s is unlocked.A source you turned off stays off either way.
Each release carries the Wayseer end-user license it is under, dated by its version, such as 2026-10-05. You accept it by adding a key to the release or by running it. Adding a key with >license.add asks first, and Y records the version you accepted as license_terms_accepted in state.yaml. An organization accepts it for a key it hands out with license_terms_accepted in config (deploying a key). A later release may ship a newer version, which you accept the same way.
The first time Wayseer runs, the status line says so once:
your use of Wayseer is under its end-user license 2026-10-05; read it with >license.terms
It never asks anything, and a key you stored keeps working. It shows again only on the first run of a release with a newer version, and not at all for a version you accepted when adding a key, or one the config deploying your key accepts. state.yaml records the version you were last told of as license_terms_noticed.
>license.terms opens the license panel on it. T switches to the third-party notices and back, and Esc closes the panel.wayseer --license-terms prints it, needing no config and opening no window.Wayseer includes software made by others, each part under its own license: its two fonts, Natural Earth's map of the land, the Go modules it's built from and, in the packages, SDL3. A key doesn't change those licenses, and they don't depend on one.
You can read every notice in three places:
>license panel's Third-party software section.wayseer --licenses prints the same text, so a copied binary still carries it.share/licenses/wayseer/, macOS in Wayseer.app/Contents/Resources/licenses/, and Windows in licenses\ in the install folder. THIRD_PARTY.txt holds each Go module's license and NOTICE file, and SDL3.txt, OFL-*.txt and NaturalEarth.txt cover the rest. The AppImage adds AppImage-runtime.txt for the runtime that starts it.Your key and licensee name are shown only in >license. They never appear in logs, the language model's context, or replies to control clients. These only ever learn that a module is locked. Control clients can't run the license commands, and the model is never offered them.