FiftyOne dataset visualization and curation tool via Podman Quadlet. Multi-container architecture with MongoDB sidecar for dataset persistence. GPU-accelerated for ML workflows. Use when users need to configure, start, or manage FiftyOne for dataset analysis.
Manages FiftyOne dataset visualization with GPU-accelerated Podman containers and MongoDB persistence.
/plugin marketplace add atrawog/bazzite-ai-plugins/plugin install bazzite-ai@bazzite-ai-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
The fiftyone command manages FiftyOne dataset visualization using Podman Quadlet containers. It includes a MongoDB sidecar for persistent dataset storage.
Key Concept: FiftyOne runs as a multi-container application with a MongoDB sidecar. The main FiftyOne container handles the web UI and processing, while MongoDB stores dataset metadata.
| Action | Command | Description |
|---|---|---|
| Config | ujust fiftyone config [--port=...] [--bind=...] | Configure instance |
| Start | ujust fiftyone start [--instance=N|all] | Start FiftyOne + MongoDB |
| Stop | ujust fiftyone stop [--instance=N|all] | Stop FiftyOne + MongoDB |
| Restart | ujust fiftyone restart [--instance=N|all] | Restart all containers |
| Logs | ujust fiftyone logs [--instance=N] [--lines=...] | View interleaved logs |
| Status | ujust fiftyone status [--instance=N] | Show status (all instances) |
| URL | ujust fiftyone url [--instance=N] | Show access URL |
| Shell | ujust fiftyone shell [--instance=N] [-- CMD...] | Open shell in container |
| Plugins | ujust fiftyone plugins [-- CMD...] | Manage FiftyOne plugins |
| Delete | ujust fiftyone delete [--instance=N|all] | Remove instance(s) and images |
| Parameter | Long Flag | Short | Default | Description |
|---|---|---|---|---|
| action | (positional) | - | required | Action: config, start, stop, etc. |
| config_dir | --config-dir | -c | ~/.config/fiftyone/{N} | Configuration directory |
| workspace_dir | --workspace-dir | -w | "" | Optional mount to /workspace |
| bind | --bind | -b | 127.0.0.1 | Bind address |
| port | --port | -p | 5151 | Web UI port |
| image | --image | -i | docker.io/voxel51/fiftyone | Container image |
| tag | --tag | -t | latest | Image tag |
| gpu_type | --gpu-type | -g | auto | GPU type (auto/nvidia/amd/intel/none) |
| lines | --lines | -l | 50 | Log lines to show |
| instance | --instance | -n | 1 | Instance number |
# Default configuration (port 5151, localhost only)
ujust fiftyone config
# Custom port (long form)
ujust fiftyone config --port=5152
# Custom port (short form)
ujust fiftyone config -p 5152
# Network-wide access
ujust fiftyone config --bind=0.0.0.0
# With workspace mount
ujust fiftyone config --workspace-dir=/data/datasets
# Combine parameters (long form)
ujust fiftyone config --port=5152 --bind=0.0.0.0 --workspace-dir=/data
# Combine parameters (short form)
ujust fiftyone config -p 5152 -b 0.0.0.0 -w /data
Running config when already configured will update the existing configuration, preserving values not explicitly changed.
# Start FiftyOne (includes MongoDB sidecar)
ujust fiftyone start
# Start specific instance (long form)
ujust fiftyone start --instance=1
# Start specific instance (short form)
ujust fiftyone start -n 1
# Start all instances
ujust fiftyone start --instance=all
# Stop FiftyOne + MongoDB
ujust fiftyone stop --instance=1
# Restart all containers
ujust fiftyone restart
FiftyOne shows interleaved logs from both the main container and MongoDB sidecar:
# Follow logs (default 50 lines)
ujust fiftyone logs
# More lines (long form)
ujust fiftyone logs --lines=100
# More lines (short form)
ujust fiftyone logs -l 100
# Specific instance
ujust fiftyone logs -n 1 -l 100
Log output format:
[fiftyone-mongodb] 2024-01-09 10:00:01 MongoDB started
[fiftyone] 2024-01-09 10:00:02 Connecting to database...
[fiftyone] 2024-01-09 10:00:03 FiftyOne App ready on port 5151
ujust fiftyone url
# Output: http://localhost:5151
# Specific instance
ujust fiftyone url --instance=2
# Interactive shell
ujust fiftyone shell
# Run specific command (use -- separator)
ujust fiftyone shell -- fiftyone --version
ujust fiftyone shell -- pip list
# Specific instance
ujust fiftyone shell --instance=2 -- python -c "import fiftyone as fo; print(fo.__version__)"
# Short form
ujust fiftyone shell -n 2 -- ls -la
# List installed plugins
ujust fiftyone plugins -- list
# Install a plugin
ujust fiftyone plugins -- install <plugin-name>
# Update plugins
ujust fiftyone plugins -- update
FiftyOne runs with a MongoDB sidecar:
+-------------------+ +-------------------+
| FiftyOne | | MongoDB |
| (fiftyone-1) | -----> | (fiftyone-mongodb-1) |
| Port 5151 | | Port 27017 |
+-------------------+ +-------------------+
| |
+---- bazzite-ai network ----+
Container Names:
fiftyone-{N} - Main FiftyOne containerfiftyone-mongodb-{N} - MongoDB sidecarLifecycle:
start starts MongoDB first, then FiftyOnestop stops FiftyOne first, then MongoDBlogs shows interleaved output from both| Instance | FiftyOne Port | MongoDB Port |
|---|---|---|
| 1 | 5151 | 27017 |
| 2 | 5152 | 27018 |
| N | 5150+N | 27016+N |
FiftyOne supports GPU acceleration for ML model inference:
# Auto-detect GPU (default)
ujust fiftyone config
# Explicit NVIDIA (long form)
ujust fiftyone config --gpu-type=nvidia
# Explicit NVIDIA (short form)
ujust fiftyone config -g nvidia
| File | Purpose | Location |
|---|---|---|
| Instance config | Per-instance settings | ~/.config/fiftyone/instance-{N}.env |
| Quadlet unit (main) | Service definition | ~/.config/containers/systemd/fiftyone-{N}.container |
| Quadlet unit (MongoDB) | Sidecar definition | ~/.config/containers/systemd/fiftyone-mongodb-{N}.container |
# 1. Configure FiftyOne with dataset directory
ujust fiftyone config --workspace-dir=/data/datasets
# 2. Start FiftyOne
ujust fiftyone start
# 3. Get URL
ujust fiftyone url
# 4. Open in browser
# http://localhost:5151
# Start FiftyOne
ujust fiftyone start
# Open shell for interactive work
ujust fiftyone shell
# Inside container:
# import fiftyone as fo
# dataset = fo.load_dataset("my_dataset")
# session = fo.launch_app(dataset)
# Configure for network access
ujust fiftyone config --bind=0.0.0.0
# Restart to apply
ujust fiftyone restart
# Access from other machines
# http://<hostname>:5151
Check:
ujust fiftyone status
ujust fiftyone logs --lines=50
Common causes:
Fix:
# Delete and reconfigure
ujust fiftyone delete
ujust fiftyone config --port=5152
ujust fiftyone start
Symptom: FiftyOne logs show "Connection refused" to MongoDB
Check:
# Check MongoDB container
podman ps | grep fiftyone-mongodb
ujust fiftyone logs | grep mongodb
Fix:
# Restart both containers
ujust fiftyone restart
Symptom: Datasets disappear after restart
Check:
Fix:
# Reconfigure with explicit config directory
ujust fiftyone config --config-dir=/data/fiftyone
jupyter (ML notebooks), ollama (LLM inference)ujust config gpu setupUse when the user asks about:
This skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.