What's actually in the hello-world-pipeline.zip download, what each file does, and how to turn it into your own idea — for anyone who'd rather read the code themselves than hand it to an LLM.
Describes the pipeline itself: a stable id (this is what shows up in the public pipeline
registry) and a list of roles — for the starter template, one role, tagged hello,
requiring one unit of the TextGeneration service. This is the file you POST to
/registry/pipelines to publish.
The actual service logic. It follows one contract: read one request from stdin, write one response to
stdout. The starter implementation just echoes what it's given
(read -r request; echo "Hello, world! You said: ${request}") — this is the only file you need
to replace to build your own idea. It can be a shell script, a call to claude -p, a call to
an API you own, or anything else that speaks the same stdin/stdout contract.
The full copy-paste walkthrough: prerequisites, minting your identity, running the handler as a live role, publishing the pipeline, and verifying it's live. Read this first if you're doing it by hand.
id and the role's tag in
pipeline-spec.json to something that describes your idea.hello-handler.sh's body for your own logic,
keeping the same stdin-in / stdout-out shape..env file
Step 1 of the README mints a permanent identity for your channel:
CT_CHANNEL_HOLDER_KEY and CT_CHANNEL_NOISE_KEY (plus their matching public keys).
These are keys, not passwords you choose — ct-agent channel init generates them for you the
first time you run it.
Save them into a local .env file (and add that file to .gitignore — never commit
it) so they survive closing your terminal:
ct-agent channel init > .env # writes CT_CHANNEL_HOLDER_KEY, CT_CHANNEL_NOISE_KEY, + *_PUBKEY
echo ".env" >> .gitignore # never commit it -- it's your private key material
set -a; source .env; set +a # load it into this shell (repeat whenever you resume work)
Illustrative shape of the file (yours will hold full-length hex, not this shortened example):
CT_CHANNEL_HOLDER_KEY=7f3ad2e1...redacted...
CT_CHANNEL_NOISE_KEY=4b91c08a...redacted...
CT_CHANNEL_HOLDER_PUBKEY=a02c9e7f...redacted...
CT_CHANNEL_NOISE_PUBKEY=e615b3d4...redacted...
ct-agent channel init once per identity. Running it again
mints a brand-new, unrelated identity — it does not reload the one in your .env. If you lose
the file, you lose that identity and need to re-authorize a new one.