# Troubleshooting

Find safe remedies for installation, configuration, engine and discovery failures.

Source: https://docs.gyblos.com/en/help/troubleshooting

Use this page for the free Docker seller from your invitation. Run commands from `~/gyblos-seller`
(or your chosen installation folder). Read the exact code before changing anything. Keep the existing
identity and volumes throughout diagnosis.

## Diagnosis

```sh
cd ~/gyblos-seller
docker compose ps
docker compose exec seller gyblos seller status
```

For `STARTING`, wait briefly and check again. For `FAILING`, read the phase, code and hint.
For `NOT_CONFIRMED`, check whether the container is actually up. For `STOPPED`, start with
`docker compose up -d --force-recreate seller`. `RUNNING` does not prove publication or an external request.

If `exec` reports that the service is stopped or restarting:

```sh
cd ~/gyblos-seller
docker compose run --rm seller gyblos doctor
```

Doctor performs dependency probes and prints public identity, codes and hints. For the local default,
check Ollama first. Only use `--online` when you intend additional remote probes.

## Installation

### Docker

| Symptom or exact output                                     | Remedy                                                                                                    |
| ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| `Docker is not installed` or `Docker Compose v2 is missing` | Install Docker with the Compose plugin, v2.17 or later, using the platform's normal installation process. |
| `Docker is not running`                                     | Start Docker Desktop or the authorized Docker service, then retry the installer.                          |
| `Docker Compose … is too old`                               | Update Docker or Compose to v2.17 or later.                                                               |

### Ollama

| Symptom or exact output | Remedy                                                                                |
| ----------------------- | ------------------------------------------------------------------------------------- |
| `Ollama did not start`  | Inspect `docker compose logs ollama` privately; check memory, disk and Docker health. |

### Installer

| Symptom or exact output                                        | Remedy                                                                                                                                                                       |
| -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `The relay token is empty` or `must have 32 to 512 characters` | Copy the invitation's relay token without surrounding text. Do not show or paste it into support chat.                                                                       |
| `That is the gyb_ invite code, not the relay token`            | You entered the invitation code. Rerun `sh install.sh` with the invitation's relay token; use the `gyb_` code later in [Register and publish](/en/sellers/register-publish). |
| Installer stops with `gyblos install:` or `FAIL`               | Correct the named cause, then rerun `sh install.sh` where you saved it. Existing files and identity are preserved.                                                           |
| `The image signature did not verify`                           | Do not run that image or bypass the check. Download the installer again from `https://gyblos.com/install.sh` and report the image line through your invitation channel.      |

## Configuration

```sh
cd ~/gyblos-seller
docker compose run --rm seller gyblos config validate --config /config/gyblos.toml
```

Use the reported key path, such as `offers[0].free.per_buyer_cap`. After `OK`, run doctor if startup still
refuses the file. See the [configuration reference](/en/reference/configuration) for defaults and ranges.

| Code / symptom                                                                                            | Remedy                                                                                                                                                 |
| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `FILE_NOT_FOUND` from validation                                                                          | Use the explicit container path above. Validator ignores `GYBLOS_CONFIG` when selecting its file.                                                      |
| `TOML_SYNTAX`, `UNKNOWN_KEY`, `WRONG_TYPE`                                                                | Correct syntax, remove unknown keys or use the required type. Do not duplicate `[discovery]` or the same model offer.                                  |
| `INVALID_CAP`                                                                                             | Use positive integers; per-buyer cap cannot exceed the daily total.                                                                                    |
| `INVALID_LIMIT`                                                                                           | Respect each capacity range and the connection × per-buyer rate constraint.                                                                            |
| `INLINE_SECRET`                                                                                           | Remove the credential from TOML; use a variable name and private environment file. Rotate an exposed credential through its issuer.                    |
| `RELAY_ONLY_CONFLICT`                                                                                     | Remove the external address or turn relay-only off; consider all environment overrides too.                                                            |
| `SELLER_SETTING_UNSUPPORTED`                                                                              | Remove file-derived `node.data_dir`, `node.rpc_url` or `node.payout_wallet`; this runtime uses its existing home/role provisioning.                    |
| `SELLER_OFFERS_MISSING`                                                                                   | Restore at least one supported offer. A schema-valid empty offer list cannot serve.                                                                    |
| `SELLER_OFFER_MODEL_UNSUPPORTED`, `SELLER_OFFER_ENGINE_UNSUPPORTED`, `SELLER_OFFER_REASONING_UNSUPPORTED` | Return to the supported local Qwen3 offer with reasoning `off`, or inspect plugin restrictions before using an advanced engine.                        |
| `SELLER_OFFER_API_KEY_MISSING`, `SELLER_OFFER_API_KEY_UNSAFE`                                             | Advanced providers need the correct nonempty variable inside the container; use a separate name that does not begin `GYBLOS_` or name the relay token. |
| `MAINNET_UNSUPPORTED`, `SELLER_PAYMENT_ROLE_MISSING`                                                      | Keep this installation on devnet with a free offer; paid/mainnet setup is not part of this onboarding.                                                 |

## Connection

### Engine

| Code / symptom                         | Remedy                                                                                                                                 |
| -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `ENGINE_UNAVAILABLE`, `ENGINE_TIMEOUT` | Check Ollama service health and that `qwen3:0.6b` is downloaded. Inspect Ollama logs privately. Keep the supplied loopback engine URL. |
| Seller fails after Ollama restarted    | Run `docker compose restart seller`, then check status; both share a network namespace.                                                |

### Relay

| Code / symptom         | Remedy                                                                                                                          |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `SELLER_RELAY_OFFLINE` | Check outbound internet access and whether the invitation token is correct. This means no relay answered in the startup window. |
| `CLOCK_SKEWED`         | Enable automatic time synchronization on the host; future-dated records can be rejected.                                        |

If only the relay token needs replacement, stop the seller, open `seller.env` in a private local editor
and replace only the token value with the invitation's correct value. Preserve any provider credentials.
Recreate with `docker compose up -d --force-recreate seller` to load the changed environment. Never print
the file, put its contents on a command line or delete the data volume.

## Publication

### Registration

| Discovery code / observation        | Remedy or interpretation                                                                                                                                                                             |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DISCOVERY_IDENTITY_NOT_REGISTERED` | Rerun in an interactive terminal for devnet enrollment. Review estimated cost and approval in the registration guide first; the owner needs devnet SOL. Preserve the invite, which can still expire. |
| `REGISTER_IDENTITY_UNAVAILABLE`     | Enrollment did not complete: read the missing-SOL, simulation or uncertain-result hint. Follow the registration guide before retrying.                                                               |
| `REGISTER_CANCELLED`                | You answered something other than `yes` or `y`: nothing was signed or sent. Run `gyblos seller register` again.                                                                                      |
| `DISCOVERY_INVITE_INVALID`          | Code is wrong, used or expired; request a replacement through the invitation channel.                                                                                                                |
| `DISCOVERY_NODE_REVOKED`            | Contact Gyblos; do not generate another identity to bypass removal.                                                                                                                                  |
| `DISCOVERY_RATE_LIMITED`            | Wait a minute before retrying registration.                                                                                                                                                          |
| `DISCOVERY_UNAVAILABLE`             | Try later or contact Gyblos. Check the configured index origin before submitting an invite.                                                                                                          |

A registration rerun checks saved state and may resend the same previously approved transaction
without a new prompt. Preserve all files and locks. Expiry alone does not prove no transaction or fee;
partial/inconclusive state needs help. Read [registration recovery limits](/en/sellers/register-publish)
before repeating the command. Never clear state to force another attempt.

### Visibility

Work through [Register and publish](/en/sellers/register-publish): confirm registration, `publish = true`,
recreation after the edit, then `seller status --online`. Confirm that you are querying the same index
where you registered and that at least one offer is ready.

| Discovery code / observation    | Remedy or interpretation                                                   |
| ------------------------------- | -------------------------------------------------------------------------- |
| `not in the first 2000 sellers` | Search budget exhausted; not proof that you are absent.                    |
| `index unreachable`             | Listing state is unknown; resolve connectivity before drawing conclusions. |

## Requests

The offer reserves input plus maximum output at admission. A request may exceed the remaining daily
or per-buyer allowance even if some tokens remain. Capacity and distinct-buyer limits can also refuse
requests. Review [Models and offers](/en/sellers/models-offers); do not restart to bypass limits.
A listing alone does not create demand, and a 24-hour receipt summary is not a quota balance.

## Identity and recovery

Preserve the volume and ask for help. Do not delete a sequence lock, journal, role file or keys to make
checks pass. Do not rerun setup into another home or use `docker compose down -v`. No complete seller
restore is documented here; see [Identity and private data](/en/sellers/identity).

## Ask for help

Reply through the invitation channel with the relevant error code and these outputs:

```sh
cd ~/gyblos-seller
docker compose exec seller gyblos seller status
docker compose images seller
```

If `exec` is unavailable, share the relevant doctor code instead. Review output before sending. Do not
send `seller.env`, invite codes, raw logs, environment dumps, `docker inspect`, receipts or volume contents.
