# Provider quickstart

> Install the provider agent, sign in, set up an endpoint and keep it running. From zero to a live offer.

Source: https://0.0.0.0:3000/docs/providers/quickstart
Documentation index: https://0.0.0.0:3000/docs/llms.txt

This guide takes a self-hosted source from nothing to **Live**, when customers can route requests to it. It uses Ollama because it needs no API key; the steps are the same for every other source. Source-specific requirements are in [Inference sources](/docs/providers/sources).

You need a Numes account, a machine on a [supported platform](/docs/providers/install-and-update#supported-platforms), and an inference source that the machine can reach.

:::steps
### Create a provider (optional)

Setup can create the provider for you, but creating it in the dashboard first lets you pick the name customers see. Open [Provider › Overview](/dashboard/provider), choose **Become a provider** (or **New provider**), enter the **Provider name** and choose **Self-hosted** under **How you'll serve**. The dialog shows the commands below and waits for your first endpoint to connect; you can close it and come back.

### Install the agent

```bash
curl -fsSL https://numes.ai/install | sh
```

The installer downloads the latest stable release for your platform, verifies it, and links the `numes` command at `~/.local/bin/numes`. If that directory isn't on your `PATH`, it prints the line to add. Check the installation:

```bash
numes version
```

To pin a version, install offline or control updates, see [Install and update](/docs/providers/install-and-update).

### Sign in

```bash
numes auth login
```

At a desktop session, a browser opens on this machine. Over SSH, without a display or in a non-interactive terminal, the agent prints an address and a short code instead: open the address on any device, check that the code matches and approve. Force either method with `--login-method loopback` or `--login-method device`.

`numes auth status` shows your sign-in, and `numes auth logout` revokes and removes it.

### Create an endpoint

```bash
numes provider tui
```

Press `n` for a new endpoint. Setup has four steps:

1. **Source**: if asked, choose the account and provider you created in the dashboard; the dashboard dialog names both. Pick **Ollama**, check the address and concurrency, and choose **Connect and find models →**.
2. **Models**: tick models with `Space` and search with `/`. Rows marked `⚠ needs name` need a public `author/model` name; press `e` to choose one.
3. **Review**: check each model's public name, currencies, prices, context length and capacity, and the provider and endpoint names. Prices are prefilled where a [reference price](/docs/providers/pricing#reference-prices-and-markup) exists; enter or confirm every one.
4. **Submit**: press `P`. Setup creates or reuses the provider and endpoint, enrolls this machine, submits the models and, with **Start serving now** on, starts the endpoint.

Each step saves a draft. `Esc` or a tab key leaves setup, and **Continue setup** on **Overview** or **Endpoints** resumes it. See [Terminal UI](/docs/providers/terminal-ui) for every screen and key.

### Wait for review and verification

Your provider, your endpoint, each public model name and each model's first prices are reviewed. Meanwhile your models show **In review** or **Waiting for approval**.

After approval, models show **Checking** while automated checks exercise every capability you declare through your agent, with synthetic requests and never customer data. When every check passes, the model shows **Live** and starts receiving traffic. Checks run only while your agent is connected, so keep the endpoint running.

Later price or model changes go live automatically once they pass verification and price protection. Misrepresenting a model, its capabilities, its usage or its data handling leads to suspension and to withholding or reversal of earnings.

### Check status

```bash
numes provider status --profile ollama-local
```

`status` combines the local process with the platform's view of your provider, endpoint and models, and reports one [readiness state](#readiness-states) and the next action. Add `--local` to skip sign-in and check only the local process.
:::

## Set up from the command line

The same setup as commands you can script or run over SSH. Preview it with `--plan`, which saves a local draft and creates nothing on the platform:

```bash
numes provider setup ollama \
  --profile ollama-local \
  --provider-name "Example Labs" \
  --model llama3.2:3b \
  --canonical-model llama3.2:3b=meta-llama/llama-3.2-3b-instruct \
  --currency USD \
  --prompt-price 0.10 \
  --completion-price 0.40 \
  --plan --non-interactive
```

Then resume the draft, confirm the plan and start the endpoint:

```bash
numes provider setup --resume ollama-local --start --wait-ready
```

- `--model` is the model ID as your source reports it. Repeat it for each model.
- `--canonical-model` sets the public `author/model` name. Setup proposes a name for each model from names the platform already knows and from public model catalogues; you need this option when there's no proposal or you want a different name. Public model names are reviewed by the platform.
- Prices are exact decimals per 1M tokens in the chosen currency.
- `--provider ID` reuses a provider you created in the dashboard instead of `--provider-name`. Without either flag, interactive setup lists your self-hosted providers to reuse, then **Create a new provider**. Add `--account ID` if you belong to several accounts; `numes account list` shows them.
- `--wait-ready` waits up to 30 seconds and prints the combined status.

With `--non-interactive` and without `--plan`, one `setup` command submits directly. For a source that needs an API key, add `--api-key-env NAME` so the key is read from an environment variable rather than typed. All options are in the [CLI reference](/docs/providers/cli#setup).

## Readiness states

`status` reports the first state that applies, in this order.

| State | Meaning | What to do |
| --- | --- | --- |
| `awaiting_provider_approval` | Your provider is in review. | Wait. |
| `provider_review_blocked` | The provider was sent back, rejected or suspended. | Follow the feedback. Requested changes can be corrected and resubmitted; rejection is final. |
| `awaiting_endpoint_approval` | The endpoint is in review. | Wait. |
| `endpoint_review_blocked` | The endpoint was sent back, rejected or suspended, or is still a draft. | Edit and submit it, or follow the feedback. |
| `endpoint_paused` | You paused the endpoint. | Resume it in the dashboard or the terminal UI. |
| `endpoint_reconnect_required` | The endpoint's key was revoked or must be set up again. | Choose **Reconnect agent** in the terminal UI (**Endpoint › Settings**). |
| `submission_review_required` | A model submission had changes requested or was rejected. | Open the model's feedback and respond. |
| `profile_stopped` | The local process isn't running. | `numes provider profile start --profile NAME` |
| `profile_transitioning` | The process is starting or stopping. | Wait and check again. |
| `profile_failed` | The process failed. | Run `numes provider doctor --profile NAME`, fix the reported problem and start again. |
| `models_excluded` | The source is reachable, but no published model matches its published terms any more. | Follow the next action, which names the model and the fix. |
| `source_unavailable` | The source is unreachable or no selected model is available. | Check the source, then run `doctor` and `source probe`. |
| `gateway_disconnected` | The agent isn't connected to the platform. | It usually recovers by itself; if it persists, run `doctor`. If the reason is `agent_update_required`, run `numes update`. |
| `manifest_unconfirmed` | The platform hasn't accepted the published terms on this connection yet. | Wait; check the profile log if it persists. |
| `offer_verification_failed` | A model failed verification. | Fix the source, then run `numes provider verification retry --profile NAME`. |
| `offers_not_serving` | A model isn't serving, for example because it's offline or suspended. | Read the reason in the output. |
| `verifying_offers` | Review or verification is still in progress. | Wait. |
| `routable` | Every configured model is live. | Nothing. |

The dashboard and the terminal UI show the same statuses with the labels in [Review and lifecycle](/docs/providers/lifecycle).

## Keep it running

`--start` and `numes provider profile start` run the endpoint in the background. It keeps running after you close the terminal, but not after a reboot. For a permanent setup, install it as a per-user service (a systemd user service on Linux, a LaunchAgent on macOS). Stop the background process first, because only one process can own a profile:

```bash
numes provider profile stop --profile ollama-local
numes provider service install --profile ollama-local
numes provider profile start --profile ollama-local
```

The service starts automatically; add `--manual-start` to install it without automatic startup. Once it's installed, `profile start` and `profile stop` control it. `numes provider service status` and `numes provider service remove` (both with `--profile`) show and remove it.

- **Linux:** user services start at boot and survive logout only with lingering enabled for your user. The command enables it when it can, and otherwise prints the command for an administrator, such as `sudo loginctl enable-linger <user>`.
- **macOS:** the service starts when you sign in.
- **API keys:** a service doesn't inherit your shell environment. If the profile reads a key from an environment variable (`env://`), `service install` copies its value from your current shell into the profile's owner-only secret store, and refuses with the variable's name when it isn't set. The desktop app's [Background service](/docs/providers/desktop#user-services) panel asks for the same values.

Installing a service also installs the updater that keeps the agent current; see [Automatic updates](/docs/providers/install-and-update#automatic-updates). On stop, the endpoint stops accepting new requests and lets running ones finish before it closes. The [desktop app](/docs/providers/desktop) can install and manage the same services, including on remote machines over SSH.

## Next steps

:::cards
- {plug} [Inference sources](/docs/providers/sources) Requirements and options for each source.
- {coins} [Pricing your models](/docs/providers/pricing) Choose prices that pass price protection and win traffic.
- {badge} [Review and lifecycle](/docs/providers/lifecycle) Statuses, verification retries, pausing and reconnecting.
- {terminal} [Terminal UI](/docs/providers/terminal-ui) Screens, keys and what each status means.
- {tree} [Profiles and configuration](/docs/providers/profiles) Where the agent keeps state and how to run several endpoints.
- {console} [CLI reference](/docs/providers/cli) Every command and option.
:::
