PodletJS successfully implements the core functionality of the original Podlet (Rust) with:
- Docker run command parsing (40+ flags supported)
- Docker Compose file parsing (multi-service with dependencies)
- Quadlet file generation (complete systemd integration)
- Comprehensive testing (200+ test cases)
The tool is production-ready for 90%+ of real-world use cases.
Status: Not implemented
Effort: Medium
Impact: High for multi-container deployments
-
--podflag support for compose files - Generate
.podQuadlet files automatically - Pod-level port publishing (move ports from containers to pod)
- Container-to-pod linking
Use Case: Convert compose services into a single Podman pod instead of separate containers.
# Input: compose with --pod flag
services:
web:
ports: ["8080:80"]
api:
ports: ["3000:3000"]
# Output:
# - app.pod (with both ports)
# - app-web.container (linked to pod)
# - app-api.container (linked to pod)Status: Placeholder implementation
Effort: Medium
Impact: Medium for development workflows
- Parse
buildsections in compose files - Generate
.buildQuadlet files - Handle build context paths and Dockerfiles
- Build argument support
- Multi-stage build support
Current Limitation: Services with build get placeholder image names like servicename.build.
# Currently limited support
services:
app:
build:
context: ./app
dockerfile: Dockerfile.prod
args:
NODE_ENV: productionStatus: Not implemented
Effort: Low-Medium
Impact: Medium for older Podman versions
- Podman version detection/specification
- Feature downgrading for older versions
- Quadlet option compatibility matrix
- Validation warnings for unsupported features
Use Case: Ensure generated Quadlet files work with specific Podman versions (4.4, 4.5, 5.0, etc.).
Status: Not implemented
Effort: Low
Impact: High for end-user experience
- Command-line interface (like original Podlet)
- File input/output options
- Batch processing support
-
--file,--unit-directoryflags - Progress reporting for large compose files
Use Case:
npx podlet-js docker run nginx:latest
npx podlet-js compose docker-compose.yml --output ./quadlets/Status: Partial/Not implemented
Effort: Medium-High
Impact: Low-Medium (edge cases)
- Configs support (when Quadlet supports it)
- Secrets support (when Quadlet supports it)
- Extension fields (
x-*) - Advanced networking (custom drivers, IPAM)
- Deploy section (replicas, resources, placement)
- Profiles support
Current Status: These features are intentionally not supported as Quadlet/Podman doesn't have equivalents yet.
Status: Basic implementation
Effort: Low
Impact: Medium for developers
- TypeScript definitions for better IDE support
- VS Code extension for Quadlet syntax highlighting
- JSON Schema for compose validation
- Plugin system for custom transformations
- Debug mode with detailed transformation logs
Status: Basic implementation
Effort: Low-Medium
Impact: Medium for integration
- YAML output format (alternative to INI)
- JSON output for programmatic use
- Kubernetes YAML generation (like original Podlet)
- Template system for custom output formats
- Diff mode for comparing changes
- Some docker run flags only added to
PodmanArgs(not native Quadlet options) - Build contexts generate placeholder images instead of proper build files
- Network aliases handling could be more sophisticated
- Volume mount option parsing could be more robust
- Some advanced Podman-specific flags not supported
- Compose interpolation (environment variable substitution)
- Compose
includedirective - Docker Swarm specific features (by design - not applicable)
- CLI Tool Interface - Makes it usable as a standalone tool
- Pod Generation Support - Major feature gap from original Podlet
- Build Context Handling - Important for development workflows
- Podman Version Compatibility - Important for enterprise use
- TypeScript Definitions - Better developer experience
- Advanced Output Options - Integration flexibility
- Extended Compose Features - Waiting on Podman/Quadlet support
- Plugin System - Over-engineering for current scope
- VS Code Extension - Separate project territory
Send pull a requests if you're interested in implementing any of these features.