Skip to content

Setup Code

The first time you open Weaver, the setup wizard creates your administrator account. When Weaver can be reached from other machines, the wizard also asks for a one-time setup code, which looks like K7P-M2X. Weaver prints that code when it starts, somewhere only the person running Weaver can read it. Anyone else on your network could open the wizard, but they can’t finish it without the code.

It depends on the address Weaver listens on.

Weaver listens onSetup code
127.0.0.1, the default for Homebrew, Winget, the MSI, the DMG, and the portable binariesNot needed. Only a browser on the same machine can open the wizard.
0.0.0.0 or a LAN address, including every Docker and Unraid installRequired
Any address, with WEAVER_TRUSTED_PROXIES setRequired, because the proxy relays browsers from other machines
Any address, with WEAVER_REQUIRE_SETUP_CODE=1Required

If the wizard doesn’t show a Setup code field, you don’t need one.

You can type the code in upper or lower case, with or without the hyphen. It stays valid until setup finishes. Restarting Weaver replaces it with a new code, so if you lose it, restart and read the new one.

The code goes to the container log:

Terminal window
docker logs weaver 2>&1 | grep "setup code"

With Compose, use docker compose logs weaver instead. The full log shows the code in a box headed FIRST-TIME SETUP: ACTION REQUIRED.

To skip the wizard and the code altogether, set WEAVER_BOOTSTRAP_LOGIN_USERNAME and WEAVER_BOOTSTRAP_LOGIN_PASSWORD before the first start. See Docker.

On the Docker tab, click the Weaver icon and choose Logs. The code is in the box headed FIRST-TIME SETUP: ACTION REQUIRED near the top. If the log has moved past it, restart the container and look again. The restart gives you a new code.

A Homebrew service listens on 127.0.0.1, so it doesn’t ask for a code. If you set WEAVER_HTTP_BIND_ADDRESS in config.env, the code is in the service log:

Terminal window
grep "setup code" "$(brew --prefix)/var/log/weaver.log"

The tray app listens on 127.0.0.1, so it doesn’t ask for a code. If you set WEAVER_HTTP_BIND_ADDRESS in the Windows environment, the tray shows the code in a Finish Weaver setup dialog when it starts the server. Choose OK to copy the code. If you closed the dialog, choose Restart Weaver from the tray menu to get a new one.

The portable Windows zip prints the code in the console window you started weaver.exe from.

As on Windows, the app listens on 127.0.0.1 and doesn’t ask for a code. If you widened the address with WEAVER_HTTP_BIND_ADDRESS, the menu bar app shows the code in a Finish Weaver setup alert. Copy code puts it on the clipboard, and Restart Weaver gets a new code.

Run in a terminal, Weaver prints the code there. Under systemd, it goes to the journal:

Terminal window
journalctl -u weaver | grep "setup code"

Any other service manager saves it wherever that manager keeps the process’s standard error.

With WEAVER_LOG_FORMAT=json, the code arrives as a single WARN record. The setup_code field holds the code by itself:

{"level":"WARN","fields":{"message":"ACTION REQUIRED: Weaver one-time setup code: K7P-M2X. ...","setup_code":"K7P-M2X"},"target":"weaver::setup"}

Weaver doesn’t write the code to the Logs page, to WEAVER_LOG_FILE, or to any web request. It only goes to the console output that whoever runs Weaver controls. If the code isn’t in a log file you expected to find it in, check the console or service output instead.

If a reverse proxy runs on the same machine as a Weaver that listens on 127.0.0.1, name the proxy in WEAVER_TRUSTED_PROXIES. Setup then asks for the code, as it would for any other remote browser. Without that setting, Weaver refuses setup requests the proxy relays, and asks you to finish setup in a browser on the machine Weaver runs on. See Reverse Proxy.

After five wrong codes in a minute, Weaver pauses setup attempts for a minute. Wait, then enter the code again.