This project is actively being developed. Nothing should yet be assumed stable
π Zero-config platform for deploying microservices anywhere - VMs, containers, or bare metal - with just 24MB RAM overhead.
# Deploy directly from your project directory
omni up
# Omniforge automatically:
# - Bundles your package
# - Detects your project type
# - Builds optimized container image
# - Chooses best infrastructure
# - Deploys with optimal settings
# - Autoscales and manages your app instances
Override automatic settings when needed:
# omniforge.yaml
runtime: docker # Override auto-detected runtime
provider: aws # Force specific provider
resources:
cpu: 2
memory: 512Mi
# Using GRIP
grip install omni-cli
# Or download the binary
curl -L https://omni-forge.github.io/get | sh
omni up and omni push will automatically create a service for you if one does not exist, however you can also be more deliberate
- Create a new project:
omni new my-service
cd my-service
- Deploy it:
omni push
That's it! Omniforge automatically detects your project type and deploys it to your configured provider, if there is no configuration Omni will select everything automatically.
CPIs are JSON files that define how Omniforge interacts with infrastructure providers. They specify commands, parameters, and output parsing rules.
Example VirtualBox CPI:
{
"name": "my_virtualbox_cpi",
"type": "virt",
"actions": {
"create_vm": {
"command": "VBoxManage createvm --name {vm_name} --ostype {os_type} --register",
"params": ["vm_name", "os_type"],
"output_parser": {
"type": "regex",
"pattern": "UUID:\\s+([a-f0-9-]+)",
"capture_groups": {
"vm_uuid": 1
}
},
"post_exec": [
{
"command": "VBoxManage modifyvm {vm_name} --memory {memory_mb} --cpus {cpu_count}",
"output_parser": {
"type": "exit_code",
"success_value": 0
}
}
]
}
},
"default_settings": {
"os_type": "Ubuntu_64",
"memory_mb": 2048,
"cpu_count": 2
}
}
See Providers.md
Omniforge automatically creates optimized container images based on your project's file extensions:
my-project/
βββ src/
β βββ main.rs # Detected: Rust β Uses rust-builder image
β βββ utils.py # Detected: Python β Adds Python runtime
βββ package.json # Detected: Node.js β Adds Node.js runtime
βββ Cargo.toml # Used for Rust dependencies
Create reusable infrastructure templates:
# worker.yaml
kind: Worker
spec:
runtime: docker
resources:
cpu: 1
memory: 512Mi
scaling:
min: 1
max: 10
metrics:
- type: http_requests
target: 1000
Configure multiple runtimes for different use cases:
# omniforge.yaml
runtimes:
production:
provider: aws
region: us-east-1
instance_type: t3.micro
development:
provider: virtualbox
memory: 2048
cpus: 2
name
: CPI identifiertype
: Provider type (virt, container, metal)actions
: Available commands and their specificationsdefault_settings
: Default configuration values
regex
: Extract values using regular expressionsexit_code
: Check command success/failuremulti_regex
: Extract multiple valuestable
: Parse tabular output
command
: Command template with parameter placeholdersparams
: Required parametersoutput_parser
: Output parsing rulespre_exec
/post_exec
: Additional commands to run
Create custom build steps:
# .omniforge/hooks/pre-build
#!/bin/bash
npm run build
Define sophisticated health monitoring:
health:
http:
path: /health
port: 8080
interval: 10s
timeout: 5s
retries: 3
Automatic service discovery and registration:
discovery:
service: my-api
tags: ["production", "v2"]
port: 8080
We love contributions! Here's how you can help:
- Fork the repository
- Create a feature branch
- Write your changes
- Write tests
- Submit a PR
See CONTRIBUTING.md for detailed guidelines.
-
Permission Denied
sudo chown -R $(whoami) ~/.omniforge
-
Provider Not Found
omni provider install aws
Access debug logs:
omni logs --level debug
MIT License - see LICENSE for details.
Built with β€οΈ using Rust. Star us on GitHub if you like Omniforge!