Delivery Formats
Ship your plugin in either of two formats:| Format | When to Use |
|---|---|
Zip archive (.zip) | Pure-Python plugins. Mixpeek resolves dependencies against the managed runtime. Upload via presigned URL, scanned by the security linter before deploy. Limit: 500 MB / 1,000 files. |
| Container image (OCI) | Plugins that need system packages, custom CUDA builds, compiled binaries, or non-Python runtimes. Base your image on the Mixpeek engine image, push to your org-scoped Artifact Registry repo (plugins-<org-id>/), and set container_image in manifest.py. See BYO Container Image. |
__call__, real-time run_inference, platform LLM/secret accessors).
What You Can Build
Custom plugins plug into two places in the warehouse:1. Feature Extractors (Decomposition)
Attach custom logic to a collection’sfeature_extractor so every ingested object flows through your pipeline during decomposition. Use this to:
- Embed domain-specific content with your own model (fine-tuned CLIP, proprietary audio encoder, etc.)
- Extract structured attributes via a VLM you manage (brand compliance, regulated content classification)
- Transcribe, OCR, or segment media with a custom pre/post-processing chain
- Produce multiple named vector indexes from a single pass
mixpeek://my_plugin@1.0.0/my_embedding), so retrievers, taxonomies, and clusters can reference them.
2. Retriever Operations (Query Time)
A plugin’srealtime.py exposes a Ray Serve HTTP endpoint that retriever stages can call during execution. Use this to power:
feature_search— embed queries at search time with the same model you used during ingestion, so the query vector lives in the same space as the indexed vectors- Inference operations — on-the-fly classification, scoring, or re-ranking against your model
- LLM calls — wrap a hosted or private LLM behind a stable contract, with platform-managed secrets and cost tracking
- Classifiers — apply your own classifier to candidate results mid-pipeline
How It Fits Together
Version Management
Plugins support a git-like workflow for iterating on deployed code:| Command | Description |
|---|---|
pull | Download the active version’s source files to a local directory |
push | Zip, upload, and confirm a new version (auto-bumps patch version if omitted) |
log | Show version history with deploy timestamps and commit messages |
status | Show active version, plugin ID, and security scan status |
rollback | Restore a previous version as active |
diff | Compare source files between two versions |
server/scripts/api/plugins.py or call the version management endpoints directly:
GET /v1/namespaces/{ns}/plugins/by-name/{slug}/versions— version historyPOST /v1/namespaces/{ns}/plugins/by-name/{slug}/rollback— rollbackGET /v1/namespaces/{ns}/plugins/by-name/{slug}/diff?v1=1.0.0&v2=1.0.1— diffGET /v1/namespaces/{ns}/plugins/{id}/source— download source files
Pre-installed Tools
The engine runtime includes media processing tools available viarun_tool from the Plugin SDK:
| Tool | Format | Description |
|---|---|---|
ffmpeg / ffprobe | Standard video/audio | Transcode, extract frames, probe metadata |
REDline | RED R3D | Decode RED cinema camera raw files to ProRes/DPX/EXR |
art-cmd | ARRI RAW | Decode ARRI raw (.ari/.arriraw/.arx) to ProRes |
exiftool | All media | Read/write EXIF and XMP metadata |
mediainfo | All media | Detailed format and codec inspection |
convert / identify | Images | ImageMagick image processing |
sox / soxi | Audio | Audio processing and info |
Next Steps
Quickstart
Build, upload, and deploy a minimal text embedding plugin end-to-end.
Plugin Developer Guide
Full reference: manifest format, DataFrame schema, model loading, security rules, batch optimization, examples.
Upload & Deploy API
Presigned uploads, confirm, deploy, status, undeploy, delete.
Realtime Inference API
Call a deployed plugin’s
realtime.py endpoint for retriever operations.
