Forge the server's baseline from null
Project description
NullForge
Forge the server's baseline from null — an infrastructure-as-code framework built on pyinfra, themed around a blacksmith's forge: inventories define hosts, molds shape the configuration, runes are idempotent operation sets, the foundry casts them onto targets, and the smithy holds cross-distro helpers.
[!WARNING] NullForge is in active development. Until the
v1.0.0release, the CLI, mold schemas and deploy behaviour may change at any time — breaking changes can land in any release, including patch versions. Pin an exact version (e.g.nullforge==0.1.0) and check the release notes before upgrading.
Install
# Latest release from PyPI — puts `nullforge` on PATH
uv tool install nullforge
From a source checkout instead, when you want the Python API (nullforge.molds, nullforge.smithy, ...) or to hack on NullForge itself:
uv sync
Every command below then runs as uv run nullforge ....
CLI
# Full cast (all enabled features from the inventory)
nullforge cast -i nullforge/inventories/example.py
# Cast specific runes, in order (built-in names or paths to custom rune files)
nullforge cast -i nullforge/inventories/example.py -r warp -r dns
nullforge cast -i nullforge/inventories/example.py -r ./my_rune.py
# Fresh host without sudo: run the prepare rune as a separate first deploy
nullforge cast -i nullforge/inventories/example.py -r base --with-prepare
# Connection flags are proxied to pyinfra; unknown options pass through verbatim
nullforge cast -i nullforge/inventories/example.py -r dns --ssh-user root --ssh-port 2222 --dry -v
# List built-in runes
nullforge runes
# Shell completion (bash, zsh, fish, powershell) — print or install
nullforge completion powershell --install
Custom rune files are plain pyinfra deploy modules and can use the full NullForge API, since they run in the same environment.
Note for PowerShell users: quote @local-style host specs (-i "@local") — unquoted @name is PowerShell splatting syntax and is swallowed by the shell.
Contributing
See CONTRIBUTING.md for the full setup, commit conventions and pull request flow.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nullforge-0.2.0.tar.gz.
File metadata
- Download URL: nullforge-0.2.0.tar.gz
- Upload date:
- Size: 123.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4db175a9471788032ac8b2b2ad1f43132efcc9e3263827f8e23b5c73b25c10c
|
|
| MD5 |
a6d700b1544e2425ae590d57c252c167
|
|
| BLAKE2b-256 |
fff872534a076f0a105f55117859fbb6fd4e3445096d9f7d1def30933418c084
|
File details
Details for the file nullforge-0.2.0-py3-none-any.whl.
File metadata
- Download URL: nullforge-0.2.0-py3-none-any.whl
- Upload date:
- Size: 120.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e64e2b905f3ac21200d84824e5dfa0fb8134206768107018f859d126a50150f
|
|
| MD5 |
0b7c7e2350d832e9d233cb57026df9a6
|
|
| BLAKE2b-256 |
688dc9466e7766ca11c586cd16fb662a9982d04cafb27d29686e7fd32d9d76d4
|