Absconda
Turn conda environments into optimized container images for development and HPC deployment.
Absconda bridges the gap between conda's reproducible environments and container-based workflows. Define your scientific computing environment once with conda, then deploy it anywhere—Docker, Singularity/Apptainer, HPC clusters—with production-ready optimizations.
Key Features
🚀 Multi-Stage Builds - Automatic optimization that reduces image sizes by 40-60%
🔐 Policy Validation - Enforce security and compliance rules organization-wide
🏗️ Remote Builders - Offload builds to cloud instances with automatic provisioning
🧪 HPC Integration - Singularity/Apptainer support with module files and wrappers
📦 R + renv Support - Combine conda environments with R package management
🎯 Flexible Deployment - Multiple modes: full-env, tarball, requirements, export-explicit
🔧 Custom Templates - Jinja2-based system for advanced customization
Quick Start
Installation
# Install from PyPI
pip install absconda
# Or with pipx (recommended)
pipx install absconda
# Verify installation
absconda --version
Basic Usage
1. Create a conda environment file:
# environment.yaml
name: my-analysis
channels:
- conda-forge
- bioconda
dependencies:
- python=3.11
- numpy=1.26
- pandas=2.1
- scikit-learn=1.3
2. Build a Docker image:
absconda build \
--file environment.yaml \
--repository ghcr.io/myorg/my-analysis \
--tag latest \
--push
3. Use the image:
docker run --rm ghcr.io/myorg/my-analysis:latest python -c "import numpy; print(numpy.__version__)"
For HPC with Singularity:
# Build, push, pull SIF, and generate wrappers + module in one step
absconda deploy \
--file environment.yaml \
--repository ghcr.io/myorg/my-analysis \
--tag latest \
--commands python,pip,jupyter
# Or build/push first, then deploy from the image reference
absconda publish \
--file environment.yaml \
--repository ghcr.io/myorg/my-analysis \
--tag latest
absconda deploy ghcr.io/myorg/my-analysis:latest \
--commands python,pip,jupyter
See the Quick Start Guide for a complete walkthrough.
Documentation
For New Users
- Installation - Get up and running
- Quick Start - 5-minute tutorial
- Core Concepts - Understanding absconda
Guides
- Basic Usage - Essential workflows
- Building Images - Docker build process
- HPC Deployment - Singularity on HPC clusters
- Remote Builders - Cloud-based builds
- R + renv Integration - Combining conda and renv
- Requirements Mode - Deployment mode comparison
- Advanced Templating - Custom Dockerfiles
How-To Guides
- Multi-Stage Builds - Optimize image size
- Custom Base Images - GPU and specialized bases
- Secrets Management - Handle credentials safely
- CI/CD Integration - Automate with GitHub Actions
Examples
Complete working examples with explanations:
- Minimal Python - Simple Python environment
- Data Science Stack - NumPy/pandas/scikit-learn
- R + Bioconductor - RNA-seq analysis
- GPU + PyTorch - Deep learning with CUDA
- HPC Workflow - Complete HPC deployment
Reference
- CLI Reference - Complete command documentation
- Environment Files - YAML specification
- Configuration - System configuration
- Policies - Policy validation system
For Contributors
- Contributing - How to contribute
- Testing - Running and writing tests
- Architecture - Technical design documentation
Why Absconda?
The Problem
Scientific computing has conflicting requirements:
- Reproducibility: Need exact package versions
- Portability: Must run on laptops, HPC clusters, cloud
- Performance: Large conda environments create huge containers
- HPC Reality: Singularity/Apptainer, not Docker; module systems, not Docker Compose
The Solution
Absconda solves this by:
- Starting with conda - Use the ecosystem you already know
- Optimizing automatically - Multi-stage builds reduce image sizes by 40-60%
- Targeting HPC - Native Singularity support with modules and wrappers
- Enforcing policies - Organization-wide security and compliance
- Enabling remote builds - Build on powerful cloud instances, not your laptop
Compared to Alternatives
| Feature | Absconda | repo2docker | docker-conda | Manual Dockerfile |
|---|---|---|---|---|
| Multi-stage optimization | ✅ Automatic | ❌ No | ❌ No | ⚠️ Manual |
| Singularity integration | ✅ Built-in | ❌ No | ❌ No | ⚠️ Manual |
| HPC modules | ✅ Built-in | ❌ No | ❌ No | ⚠️ Manual |
| Policy enforcement | ✅ Yes | ❌ No | ❌ No | ❌ No |
| Remote builders | ✅ Yes | ❌ No | ❌ No | ❌ No |
| R + renv support | ✅ Yes | ⚠️ Limited | ❌ No | ⚠️ Manual |
| Custom templates | ✅ Jinja2 | ❌ No | ❌ No | ✅ Full control |
Real-World Example
Complete workflow for deploying to NCI Gadi HPC:
# 1. Build optimized Docker image (locally or on GCP)
absconda build \
--file rnaseq-env.yaml \
--repository ghcr.io/lab/rnaseq \
--tag v1.0 \
--remote-builder gcp-builder \
--push
# 2. Deploy to HPC: pull SIF, generate wrappers and module
ssh gadi.nci.org.au
absconda deploy ghcr.io/lab/rnaseq:v1.0 \
--commands python,pip \
--image-cache /apps/rnaseq/v1.0 \
--output-dir /apps/rnaseq/v1.0/wrappers \
--module-dir /apps/Modules/modulefiles
# 3. Use in PBS job
module load rnaseq/v1.0
python analysis.py # Uses containerized environment transparently
The result: reproducible, optimized, compliant environments deployed consistently from development through production.
Use Cases
🔬 Research Computing
- Reproducible analysis pipelines
- Sharing environments with collaborators
- Publishing with computational papers
- Archive environments for long-term reproducibility
🏢 Multi-User HPC
- Centralized environment management
- Policy enforcement across teams
- Module system integration
- Singularity deployment at scale
☁️ Cloud + HPC Hybrid
- Build in cloud (fast, powerful VMs)
- Deploy to HPC (Singularity)
- Consistent environments across platforms
- Cost-optimized with remote builders
🧬 Bioinformatics
- Bioconda + R/Bioconductor workflows
- GPU-accelerated analysis
- Large-scale genomics pipelines
- Compliance with data policies
Project Status
Absconda is production-ready and actively maintained. It powers scientific computing workflows for research teams at the Garvan Institute and beyond.
Current version: 0.2.5
Python support: 3.10, 3.11, 3.12, 3.13+
License: MIT
Getting Help
- Documentation: docs/
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Contributing
Contributions welcome! See Contributing Guide.
Areas needing help:
- Documentation improvements
- Example workflows
- Testing on different platforms
- Feature requests and feedback
Acknowledgments
Developed at the Garvan Institute of Medical Research by the Swarbrick Lab.
Built with:
- micromamba - Fast conda package manager
- Jinja2 - Template engine
- Singularity/Apptainer - HPC containers
- Terraform - Infrastructure as code
License
MIT License - see LICENSE for details.
Ready to get started? → Installation Guide
Have questions? → GitHub Discussions
Metadata
Release files for absconda 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| absconda-0.4.0.tar.gz | 92.8 kB | With provenance | Details for absconda-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| absconda-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for absconda-0.4.0-py3-none-any.whl |
Total release size: 171.5 kB
Release files / absconda-0.4.0.tar.gz
| Download URL | absconda-0.4.0.tar.gz |
|---|---|
| Size | 92.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b1a25b280f1af834ccfc763f65ffc9e2f569769c4210c56eeec842869a7a8f23
|
|
BLAKE2b-256 checksum How to use checksums |
84ec4662f8202821a822167582d59e76bbca9536cc112ec74ffd0b3d2e242c1f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / absconda-0.4.0-py3-none-any.whl
| Download URL | absconda-0.4.0-py3-none-any.whl |
|---|---|
| Size | 78.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3cf8116d09725042299833f2f32ce0c93791041e016beca7ea5431297ec388c5
|
|
BLAKE2b-256 checksum How to use checksums |
5ff54a4d1ff3f1e755d6b6740a5b775b47b63f2b7bcfc6c072ab4b7b5c2b0242
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logSecurity for absconda 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for absconda-0.4.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.