Skip to main content

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.0 release, 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nullforge-0.2.0.tar.gz (123.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nullforge-0.2.0-py3-none-any.whl (120.0 kB view details)

Uploaded Python 3

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

Hashes for nullforge-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d4db175a9471788032ac8b2b2ad1f43132efcc9e3263827f8e23b5c73b25c10c
MD5 a6d700b1544e2425ae590d57c252c167
BLAKE2b-256 fff872534a076f0a105f55117859fbb6fd4e3445096d9f7d1def30933418c084

See more details on using hashes here.

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

Hashes for nullforge-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8e64e2b905f3ac21200d84824e5dfa0fb8134206768107018f859d126a50150f
MD5 0b7c7e2350d832e9d233cb57026df9a6
BLAKE2b-256 688dc9466e7766ca11c586cd16fb662a9982d04cafb27d29686e7fd32d9d76d4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page