Build Custom Linux ISO's and Deployments
by @ziegenbalg
Build, test, and deploy custom Linux ISOs with OpenFactory. Create VMs, run compliance tests, manage recipes.
clawhub install openfactoryπ About This Skill
name: open-factory slug: open-factory description: Build, test, and deploy custom Linux ISOs with OpenFactory. Create VMs, run compliance tests, manage recipes. version: 1.0.0 author: OpenFactory homepage: https://openfactory.tech
OpenFactory Skill
Build custom Linux ISOs, deploy VMs, run compliance tests, and manage infrastructure β all through natural language.
Connection
OpenFactory exposes an MCP (Model Context Protocol) server over SSE.
Endpoint: https://build.openfactory.tech/api/mcp/sse
Authentication (pick one):
api_key parameter on every tool call, or as Authorization: Bearer of_mcp_ HTTP header.session_token in its response. Pass it to all subsequent calls for session continuity.Session token is critical β cloud MCP clients rotate IPs between requests. Without passing session_token back, each call looks like a new anonymous user.
Tools
Builds
| Tool | What it does |
|------|-------------|
| list_builds(status_filter?, limit?) | List your builds. Filter by queued, building, built, failed, completed. |
| get_build(build_id) | Get full build details including recipe, ISO path, test results. |
| get_build_status(build_id) | Get current status, stage, and progress percentage. |
| create_build(recipe) | Create a new build from a recipe (see Recipe Schema below). |
| retry_build(build_id) | Retry a failed build with the same recipe. |
| get_iso_download_url(build_id) | Get a download URL for the completed ISO. |
| deploy_from_git(repo_url, base_image?, branch?) | Build an ISO that auto-deploys a git repo as a service. |
Recipes
| Tool | What it does |
|------|-------------|
| list_recipes(category?, search?) | Browse pre-built recipe templates. Categories: healthcare, industrial, education, municipal, research, ai-development. |
| list_recipe_categories() | List all available categories with descriptions. |
| get_recipe(recipe_id) | Get full recipe details. |
| validate_recipe(recipe) | Validate a recipe without starting a build. |
| create_recipe_from_template(template_id, name, modifications) | Fork a template and customize it. |
Tests
| Tool | What it does |
|------|-------------|
| run_tests(build_id, tests?, memory_mb?, vcpus?, timeout_seconds?, keep_environment?) | Spin up a VM from the ISO and run tests. Leave tests empty for defaults (boot, login, packages, network + feature tests). |
| get_test_results(run_id) | Get test results: passed/failed assertions, screenshots, VM info. |
| list_test_runs(build_id?, limit?) | List test runs, optionally filtered by build. |
| stop_test_run(run_id) | Stop a running test and clean up VMs. |
VMs
| Tool | What it does |
|------|-------------|
| list_vms(build_id?) | List running VMs, optionally filtered by build. |
| create_vm(build_id, name?, memory_mb?, vcpus?) | Create and boot a VM from a built ISO. |
| start_vm(vm_name) | Start a stopped VM. |
| stop_vm(vm_name, force?) | Stop a VM. force=true for immediate power-off. |
| delete_vm(vm_name) | Delete a VM and its disk. |
| screenshot_vm(vm_name) | Capture a PNG screenshot of the VM display. |
| get_vm_console_url(vm_name) | Get a VNC console URL for browser access. |
Recipe Schema
{
"name": "My Custom Server",
"base_image": "ubuntu-24.04",
"description": "What this variant is for",
"features": ["ssh", "docker", "monitoring"],
"packages": ["curl", "htop", "vim"],
"users": [
{"username": "admin", "password": "changeme", "groups": ["sudo"]}
],
"services": [
{"name": "ssh", "config": {"port": 22}}
],
"security": {"hardening_level": "standard"},
"hardware": {"min_memory_gb": 4, "min_storage_gb": 32},
"networking": {
"dns_servers": ["8.8.8.8", "1.1.1.1"]
}
}
Supported base images: debian-bookworm, debian-trixie, ubuntu-24.04, fedora-40, fedora-43, opensuse-tumbleweed, elster-os
Common features: ssh, docker, desktop, development-tools, python, nodejs, monitoring, security-hardening, audit-logging, gxp, hipaa, ollama, claude-code, openclaw, nspawn-containers, agent-containers
Workflows
Build a custom Linux ISO
1. create_build(recipe) β returns build_id
2. get_build_status(build_id) β poll until status is "built"
3. run_tests(build_id) β returns run_id
4. get_test_results(run_id) β check passed/failed
5. get_iso_download_url(build_id) β download the ISO
Deploy a git repo as a service
1. deploy_from_git("https://github.com/user/app.git", base_image="ubuntu-24.04")
β builds ISO with app auto-deployed at boot
2. get_build_status(build_id) β poll until built
3. create_vm(build_id) β boot a VM running your app
Start from a template
1. list_recipe_categories()
2. list_recipes(category="healthcare")
3. create_recipe_from_template("gxp-medtech-station", "My MedTech", {
"add_features": ["monitoring"],
"add_packages": ["prometheus-node-exporter"]
})
4. create_build(modified_recipe)
Test a build with compliance checks
1. run_tests(build_id, tests=["boot", "login", "network"], keep_environment=true)
2. get_test_results(run_id)
3. screenshot_vm(vm_name) β visually verify the desktop
Error Handling
retry_build(build_id) or check the recipe for issues with validate_recipe(recipe).get_test_results(run_id) to see which assertions failed and why.get_build_status(build_id).Rate Limits
Examples
"Build me an Ubuntu server with Docker and SSH"
{
"name": "Docker Server",
"base_image": "ubuntu-24.04",
"features": ["ssh", "docker"],
"users": [{"username": "admin", "password": "admin", "groups": ["sudo", "docker"]}]
}
"Create a Fedora desktop with AI tools"
{
"name": "AI Workstation",
"base_image": "fedora-43",
"features": ["desktop", "ssh", "python", "ollama", "claude-code"],
"hardware": {"min_memory_gb": 16, "min_storage_gb": 64}
}
"Build a GxP-compliant medical device image"
{
"name": "MedTech Station",
"base_image": "debian-bookworm",
"features": ["ssh", "desktop", "gxp", "hipaa", "audit-logging", "security-hardening"],
"security": {"hardening_level": "strict"}
}
π‘ Examples
"Build me an Ubuntu server with Docker and SSH"
{
"name": "Docker Server",
"base_image": "ubuntu-24.04",
"features": ["ssh", "docker"],
"users": [{"username": "admin", "password": "admin", "groups": ["sudo", "docker"]}]
}
"Create a Fedora desktop with AI tools"
{
"name": "AI Workstation",
"base_image": "fedora-43",
"features": ["desktop", "ssh", "python", "ollama", "claude-code"],
"hardware": {"min_memory_gb": 16, "min_storage_gb": 64}
}
"Build a GxP-compliant medical device image"
{
"name": "MedTech Station",
"base_image": "debian-bookworm",
"features": ["ssh", "desktop", "gxp", "hipaa", "audit-logging", "security-hardening"],
"security": {"hardening_level": "strict"}
}