This section is the canonical guide for authoring Volant plugins using Fledge.
It explains when to choose initramfs vs. OCI Rootfs, how fledge.toml maps to build outputs, and how those outputs map to a plugin manifest consumed by Volant.
References:
See: 2_getting-started/2_quick-start-initramfs.md and 3_quick-start-rootfs.md
fledge.toml declares:
Outputs after build:
Volant consumes a JSON manifest with exactly one boot medium set by default.
Required fields include name, version, runtime, resources, workload, and either initramfs or rootfs.
See: 6_reference/1_manifest-schema.md and docs/schemas/plugin-manifest-v1.json
{
"$schema": "https://raw.githubusercontent.com/volantvm/volant/main/docs/schemas/plugin-manifest-v1.json",
"schema_version": "1.0",
"name": "myapp",
"version": "0.1.0",
"runtime": "myapp",
"enabled": true,
"initramfs": { "url": "/path/to/plugin.cpio.gz" },
"resources": { "cpu_cores": 1, "memory_mb": 512 },
"workload": {
"type": "http",
"entrypoint": ["/usr/bin/myapp"],
"base_url": "http://127.0.0.1:8080"
},
"health_check": { "endpoint": "/", "timeout_ms": 10000 }
}
{
"$schema": "https://raw.githubusercontent.com/volantvm/volant/main/docs/schemas/plugin-manifest-v1.json",
"schema_version": "1.0",
"name": "nginx",
"version": "0.1.0",
"runtime": "nginx",
"enabled": true,
"rootfs": { "url": "/path/to/rootfs.img", "format": "ext4" },
"resources": { "cpu_cores": 1, "memory_mb": 1024 },
"workload": {
"type": "http",
"entrypoint": ["/docker-entrypoint.sh", "nginx", "-g", "daemon off;"],
"base_url": "http://127.0.0.1:80"
},
"health_check": { "endpoint": "/", "timeout_ms": 10000 }
}
Initramfs supports three modes controlled by the [init] section of fledge.toml:
See details: fledge/docs/init-modes.md and 4_plugin-development/2_initramfs.md
Use [mappings] in fledge.toml to place files inside the artifact following FHS:
Fledge auto-assigns sensible permissions based on destination path.