Extending AxonOS
AxonOS ships a comprehensive extensibility system so researchers can add their own applications without forking the project. You can use the GUI template builder or write plugin files by hand.
How it works
🧱Template builder
Pick a template, fill a short form, preview the generated Dockerfile commands, and save.
📄Plugin files
Drop YAML/JSON definitions into axonos_plugins/; they're hot-loaded by the launcher.
🤝Community sharing
Plugins are plain files — share and discover application definitions easily.
Prerequisites
# Install YAML support for plugins
pip install -r axonos_launcher/requirements.txt
Method 1 — GUI template builder
- Open the AxonOS Launcher.
- Go to the 🧩 Custom Apps tab.
- Choose a template from the dropdown.
- Fill in the form fields.
- Preview the generated Dockerfile.
- Save your application.
For example, adding a Python package: select Python Package, set App ID scikit_learn, name
Scikit-learn, package scikit-learn, and save.
Method 2 — plugin files
Create a YAML file in axonos_plugins/:
# my_tools.yaml
tensorflow:
name: "TensorFlow"
description: "Deep learning framework"
dockerfile_section: "RUN pip install --no-cache-dir tensorflow"
enabled: false
blast_plus:
name: "NCBI BLAST+"
description: "Sequence similarity search tool"
dockerfile_section: |
RUN apt update && apt install -y ncbi-blast+ && \
echo '[Desktop Entry]\nName=BLAST+\nExec=gnome-terminal -- blastn -help\nIcon=applications-science\nType=Application\nCategories=Science;' \
> /usr/share/applications/blast.desktop
enabled: false
Plugins are loaded automatically from the axonos_plugins/ directory.
Installation templates
🐍Python Package
pip install for Python libraries — set the package field.
📦APT Package
apt install for system packages — set space-separated packages.
🐙GitHub Release
Download and install from a release tarball, then register a desktop entry.
🌐Web Application
Create a desktop shortcut that opens a web tool.
Python package template
app_id:
name: "Package Name"
description: "Brief description"
dockerfile_section: "RUN pip install --no-cache-dir {package}"
enabled: false
APT package template
app_id:
name: "Package Name"
description: "Brief description"
dockerfile_section: "RUN apt update && apt install -y {packages}"
enabled: false
GitHub release template
app_id:
name: "Tool Name"
description: "Brief description"
dockerfile_section: |
RUN wget {download_url} && \
tar -xzf {archive_name} -C /opt && \
rm {archive_name} && \
ln -s /opt/{app_dir}/{executable} /usr/local/bin/{app_name} && \
echo '[Desktop Entry]\nName={name}\nExec={app_name}\nIcon=applications-science\nType=Application\nCategories=Science;' \
> /usr/share/applications/{app_id}.desktop
enabled: false
Organizing plugins
axonos_plugins/
├── my_research_tools.yaml
├── bioinformatics_extras.yaml
└── python_data_science.yaml
Set enabled: false in your definitions so apps are opt-in at build time. Toggle them
on per build via the launcher or your config file.
The repo's axonos_plugins/ directory includes example plugins and the full EXTENSIBILITY_GUIDE.md.