Like the Roman javelin — one throw, every target.
Move fast, deploy faster. No custom CI/CD required.
Standardize everything. One config format across all teams, all clouds.
Cloud-agnostic configs. Same service.yaml deploys to GCP, AWS, or Azure.
Just pilum deploy. Stop copy-pasting deploy scripts.
Drop a service.yaml in each service directory
Run pilum deploy from your project root
All services deployed in parallel to their targets
One throw, multiple targets. More coming soon.
Drop a service.yaml in each service directory.
Run pilum deploy. Done.
Real examples from production.
# Basic service configuration
name: activities-service
provider: gcp
service: cloud-run
region: us-central1
project: romans-dev
registry_name: romans-dev
# Build configuration
build:
language: go
version: "1.23"
cmd: "go build -o ./dist"
env_vars:
CGO_ENABLED: '0'
GOOS: linux
GOARCH: amd64
flags:
ldflags:
- "-s"
- "-w"
# Cloud Run configuration
cloud_run:
min_instances: 0
cpu_throttling: true # Pilum deploys itself
name: pilum
type: homebrew
description: Multi-cloud deployment CLI
license: BSL-1.1
homebrew:
project_url: https://github.com/SID-Technologies/pilum
tap_url: https://github.com/SID-Technologies/Homebrew-Pilum
token_env: GH_TOKEN
build:
language: go
version: "1.23"
output: dist/pilum
env_vars:
CGO_ENABLED: "0"
platforms:
- os: darwin
arch: amd64
- os: darwin
arch: arm64
- os: linux
arch: amd64 Arm yourself in seconds.
brew tap sid-technologies/pilum && brew install pilum
Used in production by
Pilum is free forever. Contributions welcome.
The pilum was the iconic javelin of the Roman legions. Designed with a long iron shank and weighted tip, it was engineered for one purpose: to be thrown once and hit the target with devastating precision.
Upon impact, the soft iron shank would bend, rendering the enemy's shield useless and impossible to throw back. One weapon. One throw. Mission accomplished.
Like its namesake, Pilum is designed to hit your deployment targets precisely, every time.