// Model Management

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:

Shell
# 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:

curl
# 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.
Python
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()}")
Node.js
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.