Skip to main content

Model Catalog

The Model Catalog (/) is the control surface for creating, organizing, importing, and reviewing deployable models.

Creating a model​

Dashboard​

  1. Navigate to Models in the sidebar.
  2. Click Create Model.
  3. Fill in:
    • Name — unique identifier (e.g., sentiment-v1)
    • Framework — pytorch, tensorflow, onnx, sklearn, jax, keras, or custom
    • Use case — image_classification, text_classification, object_detection, regression, etc.
    • Description — optional context for your team

Python SDK​

from octomil import ModelRegistry

registry = ModelRegistry(api_key="oct_sk_live_...")

model = registry.ensure_model(
name="sentiment-v1",
framework="pytorch",
use_case="text_classification",
description="Customer sentiment analysis"
)
print(f"Model ID: {model['id']}")

ensure_model is idempotent — it creates the model if it doesn't exist, or returns the existing one.

CLI​

octomil push ./converted --model-id sentiment-v1 --version 1.0.0

This creates the model, uploads the first version, and converts locally via CLI in one command.

Uploading versions​

Each model can have multiple versions. Upload a new version with the SDK:

result = registry.upload_version_from_path(
model_id=model["id"],
file_path="model.pt",
version="1.0.0",
description="Initial release",
formats="onnx,coreml,tflite", # Auto-convert for mobile
)

Or via the CLI:

octomil push ./converted --model-id sentiment-v1 --version 2.0.0

Version states​

StateDescription
uploadingFile upload in progress
convertingLocal format conversion in progress
draftUpload complete, not yet published
publishedAvailable for deployment
deprecatedMarked as outdated, still downloadable
archivedRemoved from active catalog

Publish a draft version to make it available:

registry.publish_version(model_id=model["id"], version="1.0.0")

Import from Hugging Face​

Import public or gated models directly from Hugging Face:

  1. Click Import from Hugging Face in the catalog.
  2. Search by repo ID (e.g., google/gemma-2b).
  3. Select a revision or tag.
  4. Octomil downloads the model and registers it in your catalog.

For gated models, provide a Hugging Face token in Settings > Integrations.

Filter catalog entries by:

FilterOptions
FrameworkPyTorch, TensorFlow, ONNX, scikit-learn, JAX, Keras
Use caseImage classification, text classification, object detection, etc.
Deployment stateDeployed, not deployed
SearchFree-text search across model names and descriptions

Model detail view​

Click a model card to see:

  • Version history — all versions with state, size, and creation date
  • Conversion artifacts — available formats (ONNX, CoreML, TFLite) per version
  • Active rollouts — which versions are deployed and to what percentage
  • Training history — federated training rounds linked to this model
  • Metrics — inference latency, accuracy, and usage across devices

Downloading models​

Pull a model version for local use:

octomil pull sentiment-v1 --version 1.0.0 --format coreml
model_bytes = client.pull_model(
model="sentiment-v1",
version="1.0.0",
format="pytorch"
)

Gotchas​

  • ensure_model is idempotent — calling it twice with the same name returns the existing model, it does not create a duplicate. Safe to call in automation scripts.
  • Format conversion is local — uploading with formats="onnx,coreml,tflite" converts locally via CLI before uploading. Large models may take minutes to convert.
  • Draft versions are not deployable — you must call publish_version before a version can be included in a rollout. The dashboard shows draft versions grayed out.
  • Hugging Face gated models require a token — set your HF token in Settings > Integrations before importing gated repos like meta-llama/Llama-3.2-3B.
  • Archived versions are still downloadable — archiving removes a version from the active catalog UI but does not delete the artifact. Use this for cleanup without breaking existing deployments.