SyndicateDocs

Troubleshooting#

Start with the service-wide check, then narrow to the subsystem the check names. Preserve worktrees, events and provider output before you retry anything that can repeat an external side effect.

Start with doctor#

syndicate doctor
syndicate doctor --json

doctor reports one line per check. A fail sets a non-zero exit code; a warn does not. Failed and warned checks print the remediation command beside them.

--json returns schemaVersion and the checks array, each entry carrying an id, a status and a one-line summary. The output carries check results only — never prompts, tokens or transcripts.

Correct the first failed check — configuration, tmux or Host readiness — then verify again before launching a session.

An agent is unavailable#

Run syndicate agent list and read the state column. --json returns the full probe, adding the availability, sign-in, ownership and configuration fields that the one-line form omits.

Symptom Check Recovery
State missing, with a list of searched directories The CLI is not on the search path this command used Install it, or set SYNDICATE_<ID>_PATH to the executable. agentPaths.<id> in config.json changes what the Host launches and what the dashboard shows, not what agent list reports
State missing, naming a configured path The configured path is not an executable file Correct the path; Syndicate reports it rather than falling back to another binary
State unauthenticated The CLI reports it is signed out syndicate agent login codex or syndicate agent login claude
State auth-unknown The CLI answered but said nothing recognisable about sign-in Run the provider's own status command as the service user, then sign in there
State installed-adopted or installed-managed PacketCode has no sign-in; it is installed and awaiting provider configuration syndicate agent configure packetcode
State broken The executable exists but failed its readiness check Reinstall or upgrade the provider CLI, then re-probe

Syndicate never reports a CLI as signed in on the strength of a successful exit alone. An unrecognisable answer is auth-unknown, so treat it as "ask the CLI", not as a working session.

Syndicate does not hold provider credentials and has no route that performs a login. The dashboard shows the exact sign-in command and opens a Host terminal for you to run it in; the CLI owns its own authentication.

A CLI installed while the Host is running does not need a service restart. The Host re-probes when a launch is refused, with a short negative window, so retry the pane after a few seconds.

A pane or session will not start#

Confirm the terminal runtime first. syndicate host status and the terminal-host service logs show whether the runtime is connected; restart the terminal-host service before investigating the adapter.

If the runtime is connected and the launch is refused for the adapter, re-read syndicate agent list for that agent and follow the table above.

Dashboard invitation fails#

Generate a new invitation; URLs are short-lived and single-use. Use the printed URL unchanged — the Host accepts its own loopback address and the configured dashboard origin, and rejects a browser that reaches it under any other name. Confirm the SSH tunnel reaches the loopback Host. Do not weaken Host binding or reuse a consumed URL.

If the dashboard loads but every action is refused, check the dashboard origin the Host is configured with. A Host pointing at an origin the browser is not reaching will serve the page and refuse the actions; re-run syndicate setup and reach the dashboard over an SSH tunnel to the loopback port.

A session is stuck#

Inspect service logs, session events and the provider process. Stop through Syndicate before using operating-system termination. Stopping a terminal session ends the whole process session it created, so a background command started inside a pane stops with it.

An exit Syndicate cannot prove is reported unconfirmed and its worktree stays quarantined. Preserve it for manual review rather than forcing a release.

A worktree cannot be released#

Run git worktree list, inspect the lease and preserve commits. Do not delete the directory until no provider process can still write and the branch is recoverable.

The terminal session list keeps growing#

Every converge that cannot start an agent leaves a durable failed row, so syndicate session list accumulates finished rows over time.

This release has no sweep for them, and no setting turns one on. The rows are small, and the exit code and failure reason are in the event log either way, so treat the growth as a disk-planning matter rather than a fault. Fix the reason a converge cannot start its agent — see the agent table above — so new rows stop arriving, and back up and replace the state directory when it becomes large. See Operations and upgrades.

When reporting an incident, remove invitation tokens, cookies, provider output, repository secrets, hostnames and private paths.