Great diligence on this report — byte-verifying the CLI against main and stopping before workarounds is exactly right, and your conclusion is correct: those two commands don't exist and never did in the shipped CLI. The tutorial was wrong (an earlier drafted flow that never shipped). It's been rewritten — the live page at railcall.ai/docs/marketplace-developer/your-first-module now documents the real flow. Here it is for v0.66:
The supported local-test loop:
# one-time: mint your Ed25519 publisher keypair
railcall market publisher init your-handle
# sign the bundle — writes module.sig next to module.json
# (the loader refuses unsigned bundles, locally too)
railcall market module sign ~/railcall-modules/greeter
# recommended: offline self-check
railcall market module verify ~/railcall-modules/greeter
# "install" = copy the signed folder into the station's modules dir
cp -r ~/railcall-modules/greeter ~/.railcall/station/modules/greeter
Then open Studio (railcall studio) → Modules tab → Reload all (no restart needed). Your module appears in the list — or under rejected with the exact reason (bad signature, schema problem, handler↔command naming mismatch). Run greet from the command palette: the airlock stages it, shows the preview, and on approve executes + emits the signed receipt — identical to what a marketplace buyer gets.
Why there's no railcall run one-liner: module commands execute through the airlock (stage → preview → approve → signed receipt) in Studio, as workflow nodes, or via MCP. A bare CLI runner would skip the approval ceremony the platform exists for, so it deliberately doesn't exist.
Two extras since you're building for the contest:
- The full
requires sandbox block (network/subprocess/filesystem_writes) is now documented at railcall.ai/docs/marketplace-developer/modules#requires-block — declare it so your listing doesn't show SANDBOX · UNRESTRICTED.
- A
railcall market install --from-path <dir> convenience (sign-check → copy → auto-reload in one command) is on the roadmap — the copy+reload dance above is the honest current state.
Good luck in Q3! 🚀