Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions tee/cli/common/manifest.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
inputs/reth-genesis.json policy-free genesis
inputs/summit-genesis.toml summit parameter choices
inputs/measurements.json raw PCR map from `make measure`
inputs/founder-withdrawal-credentials.json
authored, one address per founder
inputs/harvest/<node>.json harvested founding pubkeys + quotes

network-manifest.json deploy-time facts; SHA-256 = network_id
reth-genesis.json the input genesis with the policy's
Expand Down Expand Up @@ -124,6 +127,14 @@
# `down` — so it stays gitignored while the artifact set around it commits.
NODES_DIRNAME = "nodes"

# The founding cohort's inputs: founder-withdrawal-credentials.json is
# authored (node name -> withdrawal credentials); harvest/ holds what
# `network harvest` collected from the live cohort (pubkeys, quotes,
# verification reports) — provenance like measurements.json, but harvested
# rather than authored.
FOUNDERS_FILENAME = "founder-withdrawal-credentials.json"
HARVEST_DIRNAME = "harvest"


class ManifestSchemaError(Exception):
"""Manifest bytes don't satisfy the strict v1 schema."""
Expand Down
11 changes: 10 additions & 1 deletion tee/cli/network/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Seismic-internal, NOT a tool node operators run: it provisions a cohort of
TDX nodes (`up` / `down`) and runs the one-time network-creation steps
(`manifest`, `genesis-ceremony`). This is the CLI that is *allowed* to wrap
(`harvest`, `manifest`, `genesis-ceremony`). This is the CLI that is *allowed* to wrap
Pulumi —
`up` / `down` drive the seismic_node Automation-API orchestrator. The
operator CLI (`seismic-tee-node`) deliberately is not; the boundary is the node
Expand Down Expand Up @@ -41,6 +41,15 @@ def down(argv: tuple[str, ...]) -> None:
forward(orchestrator.down_main, "seismic-tee-network down", argv)


@app.command(name="harvest", context_settings=PASSTHROUGH, add_help_option=False)
@click.argument("argv", nargs=-1, type=click.UNPROCESSED)
def harvest(argv: tuple[str, ...]) -> None:
"""Harvest + DCAP-verify a founding cohort's summit keys into inputs/."""
from tee.cli.network import harvest as harvest_mod

forward(harvest_mod.main, "seismic-tee-network harvest", argv)


@app.command(name="configure", context_settings=PASSTHROUGH, add_help_option=False)
@click.argument("argv", nargs=-1, type=click.UNPROCESSED)
def configure(argv: tuple[str, ...]) -> None:
Expand Down
Loading
Loading