How to

Troubleshooting

Start with the logs (journalctl -u mandala -f) and Settings → Overview.

Mandala does not start

SymptomFix
cannot listen on 127.0.0.1:8787Another process holds the port. Change ALMA_LISTEN, or stop the other one.
ALMA_LISTEN must be host:portWrite it as 127.0.0.1:8787.
ALMA_GOETHE_AGENT_ROOTS must be a JSON objectWrite it on one line, the JSON in single quotes: '{"alma":"/path"}'.
Goethe directories must be private and service-ownedchmod 700 the vault directory and its parents under your control, owned by Mandala's user.
cannot start DharmaIs another Mandala using the same data directory? Only one process may. Check free disk space and permissions.
master key: …master.key is unreadable or corrupt. Restore it from a backup; never delete it on a node with stored credentials.
It starts, then the service restarts in a loopRead the first error in journalctl -u mandala -b. A failed update? mandala.prev is the previous binary.

Signing in

SymptomFix
"This page needs its secure address (https)"Open Mandala at its https:// tailnet address (Tailscale and HTTPS).
Face ID is not offered, or my passkey isn't foundThe address changed since the passkey was made (passkeys are bound to the site name). Use the original name, or MANDALA_RP_ID.
Signed out on a shared computerSessions there end after 12 hours or when the browser closes.
"Paused for 10 minutes to keep your identity safe"Too many wrong codes when adding a device. Wait, then make a New code.
"Joined. Restart Mandala on this device to finish."Restart the new node (systemctl restart mandala, or quit and reopen the Mac app).

The app

SymptomFix
The page does not load from my phoneIs Tailscale connected on the phone? Does tailscale serve status show the service?
"Knowledge could not be loaded" / "Goethe is not configured"Set ALMA_GOETHE_JULIEN_ROOT to an existing directory and restart.
My accomplice does not answerSettings → Models: is the Conversation workload's provider connected? Look in Activity for the failed turn's error.
"… isn't connected yet — add the API key in Settings → …"Your accomplice tried an integration that has no key; add it where the message says.
"Your accomplice has no model yet"Press Choose one in the banner (Choose a model).
"Connect this provider first" in Workload routingConnect it under Settings → Models.
A sign-in expiredSettings → Overview lists it; sign in again or replace with an API key.
Notifications never arrive on the iPhoneTurn them on from the Home Screen app, not from Safari. Check Send a test.

Channels

SymptomFix
A Telegram or WhatsApp chat is emptyPress Allow Alma to see this chat in Communications.
WhatsApp shows Unlinked from the phoneThe phone removed the device. Link again with a new code.
Telegram does not sign inCheck the api_id and 32-character api_hash, and that TDLib is installed (ALMA_TDLIB_LIBRARY).
Mail stopped updatingCheck the Google account's sign-in in Settings → Extensions → Google. The index resumes its sync by itself.
Smart boxes stay emptyThey need a TypeSafe key, and fill a few minutes after messages arrive.

Approvals and autonomy

SymptomFix
"yes, send it" did not approveApproval by words needs the Jev key, and payments and deletions always keep their card. Tap the card.
An allowed action still askedThe risk check sent it back; the card says why.

Sync

SymptomFix
A paired device stays Trusted, never SyncingThis node cannot reach it: give it an address, or iroh, when pairing.
Changes don't arrivePair on both sides. With a root key, certify the device.
Items under Didn't mergeSettle them: Sync and conflicts.

Contracts

SymptomFix
Install refused: "already runs"Add an upgrade action from the running version (Upgrading a contract).
"is built into Mandala"Built-in contracts change only with Mandala itself.
A query is refused at activationIt uses a stage the engine cannot maintain natively (DHLQ query reference).