Infralink Ops
BLUF
This repo packages the public controller runtime for managed hosts. Deployment intent, private templates, and secret aliases remain in the environment registry; live-service acceptance remains environment-owned operational state.
Use it when you need bounded host primitives for registry checkout, template rendering, config projection, Docker image retention, Compose consumer activation, firewall verification, secret rendering, or host doctor evidence.
Do not use this repo to select fleet desired state. Registry revisions, service definitions, image pins, hostnames, and secret bindings come from the environment registry.
Reader Paths
| Goal | Start here |
|---|---|
| Understand the runtime boundary | Controller runtime guide |
| Debug a stale RelayOS staging rollout | Controller runtime guide |
| Check available CLIs | pyproject.toml |
| Inspect host-installed launcher assets | src/infralink_ops/assets/ |
| Review controller behavior | src/infralink_ops/ and tests/ |
How It Fits
flowchart LR
registry["configured registry revision"] --> checkout["/var/lib/infralink/registry"]
checkout --> render["template render and static config projection"]
render --> consumers["Compose consumer validate/activate"]
consumers --> evidence["doctor, metrics, and logs"]
evidence --> operator["environment-owned acceptance"]
This repo implements the bounded primitives in the middle of the flow. It does not own the registry data model or the environment-specific acceptance result.
Main CLIs
| Command | Purpose |
|---|---|
infralink-controller-registry-checkout fetch |
Fetch a declared registry ref into an existing clean checkout. |
infralink-controller-template-render |
Render registry-declared templates from explicit inputs. |
infralink-controller-config-consumers validate|activate |
Validate or recreate services affected by rendered config changes. |
infralink-controller-images retain-and-prune |
Keep selected immutable Docker images and prune stale cache images. |
infralink-controller-render-secrets |
Resolve registry-declared render-secret bindings through BWS. |
infralink-controller-firewall render|verify |
Render or verify declared nftables policy. |
infralink-controller-doctor |
Read-only host-runtime check for registry, reconcile, Compose, firewall, and metrics evidence. |
infralink-host doctor|reconcile|bootstrap --apply |
Host launcher installed from src/infralink_ops/assets/infralink-host. |
Each command is intentionally narrow. Commands receive explicit inputs and return bounded machine-readable envelopes where possible.
Authority Boundary
| This repo owns | This repo does not own |
|---|---|
| Controller image build recipe. | Which registry revision a host should run. |
| Host launcher and systemd unit assets. | Service definitions, hostnames, DNS, certificates, or image pins. |
| Runtime primitives with bounded inputs and outputs. | Tenant or application policy. |
| Doctor and evidence helpers. | Live-service acceptance criteria. |
| BWS resolution primitive. | BWS secret values or registry secret declarations. |
For RelayOS IRC, source/config/image repos feed the registry first:
flowchart LR
deploy["relayos-deploy docs and deploy contract"]
config["relayos-irc-config"]
modules["custom-modules"]
images["relayos-irc-containers"]
registry["infra-registry"]
ops["infralink-ops controller"]
host["managed host"]
config --> registry
modules --> images
images --> deploy
deploy --> registry
registry --> ops
ops --> host
GHCR and BWS
The controller image publishes to
cyberstorm-dev packages as
ghcr.io/cyberstorm-dev/infralink-ops-controller.
BWS access is runtime-only. This repo contains the resolver and tests for the resolver contract; the token and secret object names belong to the environment registry and host runtime.
Verify Changes
Run the same checks Woodpecker runs:
python -m pip install --disable-pip-version-check \
'infralink @ https://github.com/cyberstorm-dev/infralink/releases/download/v0.6.14/infralink-0.6.14-py3-none-any.whl#sha256=e41e16e082df50d7506785feb40dc3ea48087d46c391e31f2bd77e3ef81ce0e3'
python -m pip install --disable-pip-version-check -e '.[dev]'
python -m ruff check src tests
python -m ruff format --check src tests
python -m pytest -q
python -m build
Infralink Ops declares compatibility with Infralink >=0.6,<0.7. Until
Infralink is published to PyPI, bootstrap a released, checksum-pinned wheel
before installing Ops so a clean environment does not attempt an unavailable
index resolution.
The controller image publish step runs only on main pushes. Pull requests use
Docker buildx dry-run validation.
Triage A Stale Host
Check in this order:
- Confirm the environment selected the intended registry revision.
- Confirm
/var/lib/infralink/registryhas the expected checkout. - Run
infralink-host doctorfor read-only host evidence. - Inspect
/var/lib/infralink/reconcile-result.ymlas the last reconcile result, not as desired state. - Check whether
infralink-host-reconcile.timerran after the registry change. - Check rendered files under
/opt/services/config. - Check the affected Compose service or application-specific behavior.
Do not repair desired-state drift by editing /opt/services directly. Fix the
registry or source repo that owns the value, then let the controller reconcile.
Development Contract
- Keep commands agent-friendly: explicit inputs, bounded output, stable exit behavior, and machine-readable evidence.
- Keep provider-specific policy out of generic primitives unless the command name says it is provider-specific.
- Add tests for every command contract, runtime boundary, and failure mode.
- Keep README-level docs focused on operator entrypoints; put command-specific details in focused guides or tests.
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 infralink_ops-0.2.70.tar.gz.
File metadata
- Download URL: infralink_ops-0.2.70.tar.gz
- Upload date:
- Size: 120.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8531397de3948e41abf6872053680dd7388429ed69104e5ebb931e552185b2d
|
|
| MD5 |
a4398c07b8a44486e81eea22a01a66f8
|
|
| BLAKE2b-256 |
da889ae56d0f9e3edb653859b3ceef2ae1e2390d4c04563cdef7d2b03545918b
|
Provenance
The following attestation bundles were made for infralink_ops-0.2.70.tar.gz:
Publisher:
publish-pypi.yml on cyberstorm-dev/infralink-ops
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
infralink_ops-0.2.70.tar.gz -
Subject digest:
a8531397de3948e41abf6872053680dd7388429ed69104e5ebb931e552185b2d - Sigstore transparency entry: 2633940615
- Sigstore integration time:
-
Permalink:
cyberstorm-dev/infralink-ops@8af93cc7d3f97cbbc60bf625add57eca5f585abc -
Branch / Tag:
refs/tags/v0.2.70 - Owner: https://github.com/cyberstorm-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@8af93cc7d3f97cbbc60bf625add57eca5f585abc -
Trigger Event:
release
-
Statement type:
File details
Details for the file infralink_ops-0.2.70-py3-none-any.whl.
File metadata
- Download URL: infralink_ops-0.2.70-py3-none-any.whl
- Upload date:
- Size: 95.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
794244180074100de272a3b7af5b312d2f00737baca8dde96d318f1ad717f23b
|
|
| MD5 |
ea0c1abd6c4a89a4f755b55b68941781
|
|
| BLAKE2b-256 |
4567aafc469060ae95da6587a3478f12543f49b594354937391cca89cc2ca833
|
Provenance
The following attestation bundles were made for infralink_ops-0.2.70-py3-none-any.whl:
Publisher:
publish-pypi.yml on cyberstorm-dev/infralink-ops
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
infralink_ops-0.2.70-py3-none-any.whl -
Subject digest:
794244180074100de272a3b7af5b312d2f00737baca8dde96d318f1ad717f23b - Sigstore transparency entry: 2633940639
- Sigstore integration time:
-
Permalink:
cyberstorm-dev/infralink-ops@8af93cc7d3f97cbbc60bf625add57eca5f585abc -
Branch / Tag:
refs/tags/v0.2.70 - Owner: https://github.com/cyberstorm-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@8af93cc7d3f97cbbc60bf625add57eca5f585abc -
Trigger Event:
release
-
Statement type: