Skip to content

Repository files navigation

Crucible

Hex.pm Hexdocs CI License: MIT Sponsor

Standalone multi-cloud provisioner CLI (same shape as orian), plus a library for Phoenix FLAME. Crucible creates the box. Zeiroh joins (Iroh/Zenoh). Gale is HTTP/3.

gale     — Phoenix HTTP/3
orian    — parallel S3/S5 transfer CLI
crucible — boot/rm VMs across clouds (this)
ingot    — Iroh + Zenoh cluster
dusk     — Zenoh-first cluster
zeiroh   — Phoenix FLAME overlay
# from this repo (preferred — Burrito binary bundles ERTS)
mix crucible.install

# or build the escript fallback (requires Erlang/OTP on PATH)
mix escript.build

# Linux/macOS: ~/.local/bin    Windows: %LOCALAPPDATA%\elixcoder\bin

crucible ls --implemented
crucible boot --driver dummy --name n1
crucible sizes --driver dummy
crucible rm --driver dummy --id dummy-1
crucible http
crucible version

As a library dependency ({:crucible, "~> 0.1"}), the CLI install task is not inherited — clone the repo or use the published escript for the standalone binary.

Credentials from env, .env, or crucible.yaml (flags override):

# crucible.yaml
driver: hetzner
region: nbg1
size: cpx21
# token: "…"   or HCLOUD_TOKEN in .env
hetzner:
  token: "…"
# .env  (does not override vars already in the shell)
HCLOUD_TOKEN=…
AWS_ACCESS_KEY_ID=…

--config path / --env-file path if the files are not in cwd. Also ~/.config/crucible/config.yaml.

Host apps can still mix crucible … or {:crucible, "~> 0.1"}.

{:ok, s} = Crucible.init(driver: :hetzner, token: System.fetch_env!("HCLOUD_TOKEN"),
  size: "cpx21", image: "ubuntu-24.04", region: "nbg1")
{:ok, m, s} = Crucible.boot(s, %{env: %{"FLAME_PARENT" => "..."}})
{:ok, m, s} = Crucible.await(s, m)
:ok = Crucible.shutdown(s, m)

FUNDING

If Crucible is useful to your project, consider sponsoring the project to support ongoing development.

Sponsor Buy Me a Coffee

MIT.

About

Multi-cloud FLAME provisioner (Libcloud-shaped)

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages