Model Catalog
Every model another operator has published, filterable by family, parameter count, context length, license, and architecture. Deploy one to your project in a click. There is no built-in list; the catalog is exactly what projects have shared.
How an entry gets in. An operator uploads or registers a model under their project, then calls share. No platform team curates the catalog; visibility tracks operator action.
Browsing the Catalog
The model catalog at /models/catalog displays all publicly
shared models. It is accessible without authentication, though deploying
a model requires a logged-in account.
Models are organized by architecture family, keyed off the model's
architecture slug (e.g., llama, qwen3moe,
deepseekv3). Mixture-of-experts is a property of certain
architectures, not a family of its own. Each family has a visual grouping
with its logo and description. Within each family, models are displayed
as cards showing key information.
Model Card Information
| Field | Description |
|---|---|
| Name | Model display name. |
| Description | Brief description of the model's capabilities. |
| Parameter count | Number of parameters (for example, 7B, 70B). |
| Context length | Maximum context window in tokens. |
| License | Model license (for example, Apache 2.0, Llama 3). |
| Architecture | Model architecture family. |
| Tags | Workload type tags (chat, code, reasoning, etc.). |
| Badges | Special indicators for notable models. |
Filtering & Tags
Filter models by workload type using tags. The workload_type
field on a model is operator-supplied free-form CSV; any value an operator
stores there will surface as a filterable tag. The table below lists the
canonical set, which is also augmented by name-based heuristics for
code, reasoning, embedding, and
multilingual.
| Tag | Description |
|---|---|
chat |
General-purpose conversational models. |
code |
Code generation and completion. |
reasoning |
Chain-of-thought and analytical reasoning. |
embedding |
Text embedding for semantic search. |
multilingual |
Strong multilingual support. |
Badges
| Badge | Criteria |
|---|---|
| Shared | Model is loaded on shared infrastructure, or a deployable model has at least one active anchor endpoint backing it. |
| XIM Only | Model is in the catalog but requires a XIM node to deploy. |
| Not Deployed | Model is shared in the catalog but has no active presence on any agent. |
| Popular | Models with 10 or more deployments across the platform. |
| Featured | Models highlighted by platform administrators. |
Badge visibility: the Popular and Featured badges are public and visible to anonymous browsers. The Shared, XIM Only, and Not Deployed badges are infrastructure indicators and are only rendered for logged-in users.
Model Details
Click on a model card to view its detail page at
/models/catalog/:id, where :id must be the
model's underlying UUID. The slug-style ids shown in
xeroctl models output (for example mdl_abc123)
are CLI-local display ids and will not resolve on this route or against
the REST API. The detail page includes:
- Full model description rendered from markdown.
- Complete metadata: architecture, parameter count, context length, quantization, license.
- Deployment button for logged-in users to add the model to their project.
To deploy a catalog model, click the deploy button on the detail page. This creates an endpoint in your project using the shared model. You must be logged in and have an active project.
Shared Model Availability
Shared models are subject to change. Models available on shared agents may be evicted or replaced at any time. Endpoints using shared models on shared tiers may become unavailable if the backing model is removed from shared infrastructure. For guaranteed availability and permanence, deploy models on XIM nodes.
Catalog models have one of two roles:
- Shared, The model is currently loaded on shared infrastructure and can be used with any tier, including shared tiers. This status is set automatically by the platform when a shared agent loads the model.
- XIM Only (Deployable), The model is visible in the catalog but requires a XIM node to deploy. It is not currently loaded on any shared infrastructure.
A model's role can change over time. A "Shared" model may revert to "XIM Only" if it is evicted from shared agents. Plan accordingly and consider XIM deployments for production workloads that require stable model availability.
Publishing to the Catalog
To make your model visible in the public catalog, use the share command:
# Share a model to the catalog
xeroctl models <model-id> --share
# Remove from the catalog
xeroctl models <model-id> --unshare
Or use the API directly:
# Share
curl -X POST https://api.xerotier.ai/proj_ABC123/v1/models/MODEL_ID/share \
-H "Authorization: Bearer xero_myproject_your_api_key"
# Unshare
curl -X POST https://api.xerotier.ai/proj_ABC123/v1/models/MODEL_ID/unshare \
-H "Authorization: Bearer xero_myproject_your_api_key"
Replace MODEL_ID with the model's UUID. The REST surface
only accepts UUIDs; the slug-style ids from xeroctl models
are CLI-local and will not resolve here.
Share / Unshare Response
Both endpoints return the same JSON envelope:
| Field | Type | Description |
|---|---|---|
id |
string (UUID) | Model id that was updated. |
shared |
boolean | true after share, false after unshare. |
message |
string | Human-readable status message. |
catalog_role |
string or null | Catalog role after the call (for example deployable), or null if not in the catalog. |
import requests
headers = {"Authorization": "Bearer xero_myproject_your_api_key"}
base = "https://api.xerotier.ai/proj_ABC123/v1"
model_id = "MODEL_ID"
# Share a model
response = requests.post(
f"{base}/models/{model_id}/share",
headers=headers
)
print(f"Shared: {response.json()}")
# Unshare a model
response = requests.post(
f"{base}/models/{model_id}/unshare",
headers=headers
)
print(f"Unshared: {response.json()}")
const headers = {
"Authorization": "Bearer xero_myproject_your_api_key"
};
const base = "https://api.xerotier.ai/proj_ABC123/v1";
const modelId = "MODEL_ID";
// Share a model
const shareResponse = await fetch(
`${base}/models/${modelId}/share`,
{ method: "POST", headers }
);
console.log("Shared:", await shareResponse.json());
// Unshare a model
const unshareResponse = await fetch(
`${base}/models/${modelId}/unshare`,
{ method: "POST", headers }
);
console.log("Unshared:", await unshareResponse.json());
What Becomes Public
When you share a model, the following information becomes publicly visible:
- Model name, description, and version
- Architecture, parameter count, context length, and license
- Quantization details and format
- Workload type tags
- Deployment count
Your project name and identity are associated with the catalog entry. Unsharing a model removes it from the catalog but does not affect existing deployments by other users.