relay-code-pi
Pi coding agent for the Modal.com + Trigger.dev (relay-code) automation framework. Mirrors the framework's three-phase lifecycle and turns its conventions (lazy-env, schema contract, ALLOWED_TASKS sync, deploy order, secret handling) into enforced Pi tool
Package details
Install relay-code-pi from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:relay-code-pi- Package
relay-code-pi- Version
0.5.7- Published
- Aug 25, 2026
- Downloads
- 1,008/mo · 1,008/wk
- Author
- taro81
- License
- MIT
- Types
- extension, skill, prompt
- Size
- 36.1 MB
- Dependencies
- 6 dependencies · 5 peers
Pi manifest JSON
{
"skills": [
"./skills",
"node_modules/pi-subagents/skills",
"node_modules/@llblab/pi-telegram/skills"
],
"prompts": [
"node_modules/pi-subagents/prompts"
],
"subagents": {
"agents": [
"./agents"
]
},
"extensions": [
"./extensions",
"node_modules/pi-subagents/index.ts",
"node_modules/pi-background-tasks/extensions/anthropic-attribution.ts",
"node_modules/pi-background-tasks/extensions/background-tasks.ts",
"node_modules/@juicesharp/rpiv-ask-user-question/index.ts",
"node_modules/@juicesharp/rpiv-todo/index.ts",
"node_modules/pi-context-usage/src/index.ts",
"node_modules/@llblab/pi-telegram/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
relay-code-pi
A Pi coding-agent package for the
relay-code automation framework
— Modal.com + Trigger.dev. It lets a non-expert "automater" build and deploy
production-ready automations end-to-end by mirroring the framework's three-phase
lifecycle (research → plan → execute) and turning its conventions
(lazy-env pattern, schema contract, ALLOWED_TASKS sync, deploy order, secret
handling) from advisory prose into enforced, deterministic Pi tools.
Install
Project-local (recommended — installs to .pi/settings.json, shareable with your team, auto-installs on trust):
pi install npm:relay-code-pi@latest -l
Global (installs to ~/.pi/agent/settings.json):
pi install npm:relay-code-pi@latest
Use -l for project-local (writes .pi/settings.json, shareable with your team, auto-installs on trust). Drop -l for the global user install.
Requires Pi ≥ 0.80.6 (for @narumitw/pi-goal agent_settled).
What it ships
- 10 deterministic tools (
extensions/relay-tools.ts) — action tools that wrap the framework's CLIs (relay_test,relay_deploy_trigger,relay_deploy_modal,relay_smoke_test,relay_dev_worker,relay_locate_automation) + convention-enforcing tools (relay_add_task,relay_add_env_var,relay_add_schema_field) + a conformancerelay_lint. A/plancommand toggles Plannotator plan mode. - Skills (
skills/) — setup + lifecycle orchestration (relay-system-setup/relay-research-automation/relay-plan-automation/relay-execute-or-resume-automation/relay-update-or-fix-automation/relay-sub-agent-builder) and vendored integration API docs. - Constitution — the framework's security rules and deploy order, scaffolded by
relay-system-setupas the project-rootprompts/AGENTS.md, which Pi auto-discovers and bundles into the system prompt every turn. It carries no project state; per-project progress lives indocs/automations/<plan>/progress.md, read on demand viarelay_locate_automation. - 6 sub-agents (
agents/) — gated fan-out viapi-subagents(airtable, apify, gohighlevel, modal, trigger-dev, unipile).
Safety gates
relay_deploy_modalrefuses untilrelay_smoke_testwrites the deploy-gate marker — the deploy order is mechanically enforced, not advisory.- Secret values live in
.env/.env.production. The user installs the user-levelenv-storageskill at~/.pi/agent/skills/env-storage/(a separate Pi skill, not shipped with this package) and runs/skill:env-storage(Load) BEFORE invokingrelay-system-setup— or pastes Modal + Trigger.dev keys directly into the project's.env/.env.production. The agent never types a secret value into a tool input, so secrets never enter the model context. - File-mutating tools run inside
withFileMutationQueueand throw on a missing anchor rather than silently corrupting a hand-edited file.
Develop
npm install
npm test # vitest — pure-core unit tests
pi -e . # package-load smoke gate (expect SMOKE_OK)
Installing env-storage
The env-storage skill is a separate Pi package (env-storage-user-skill),
installed once per machine at the user level. It does NOT ship with this
package. To install:
pi install npm:env-storage-user-skill@latest
The skill content is dropped into ~/.pi/agent/skills/env-storage/, where
Pi auto-discovers it globally. From any project, run /skill:env-storage
to Load the user's master .env + .env.production secrets into the
project, or Update the masters from the project. Run Load before
invoking /skill:relay-system-setup.
Upgrading from ≤ 0.4.1
Earlier versions of relay-code-pi shipped skills/env-storage/ inside
the package. That folder is now removed — pi update / npm update of
this package will no longer carry the skill. If you relied on the
package-shipped env-storage skill, install it separately:
pi install npm:env-storage-user-skill@latest
Existing user-data masters at ~/.pi/agent/skills/env-storage/.env and
.env.production are preserved across the upgrade — the new package
install only adds the skill files (SKILL.md + assets/).
Version history
Current version: 0.5.7. The publish flow keeps this table in sync — every release appends
a row (see CLAUDE.md → Publishing). Versions marked "(published; no matching git commit —
pre-reconcile drift)" exist on npm but were never recorded as a git commit on main; do not
create commits or tags for them retroactively.
| Version | What changed |
|---|---|
| 0.1.0 | Initial release — deterministic relay-code tools, lifecycle skills, 6 sub-agents, and the constitution. |
| 0.1.1 | Bundled third-party pi-extensions into the tarball so they load after pi install; added the files whitelist + MIT LICENSE. |
| 0.2.0 | Restructured lifecycle skills (consultation / plan / execute / sub-agent-builder); added the apify-actor-development skill; dropped the Telegram extension; stopped tracking .pyc bytecode. |
| 0.2.1 | Bundled pi-context-usage for /context visualization. |
| 0.3.0 | Dropped before_agent_start constitution injection and the bundled pi-goal / plannotator / pi-web-access packages. |
| 0.3.1 | Fixed the published tarball to include patches/. |
| 0.4.0 | Removed pi-secret-mask; shipped the .env-storage skill in-package; moved the constitution into prompts/. |
| 0.4.1 | Scaffolded dotfiles now ship as *.template (npm drops bare dotfiles); .env-storage now manages .env.production. |
| 0.5.0 | Split env-storage into its own user-level npm package (env-storage-user-skill) and dropped it from this package. |
| 0.5.1 | (published; no matching git commit — pre-reconcile drift) |
| 0.5.2 | (published; no matching git commit — pre-reconcile drift) |
| 0.5.3 | Deleted the dependency-bundling field (deprecated-spelling cleanup); added the pi-claude-marketplace extension; added the health-check starter task and maxDuration defaults to the scaffold; added prompts/ to the publish whitelist. |
| 0.5.4 | Dropped the pi-claude-marketplace extension added in 0.5.3 (no consumer in the package). |
| 0.5.5 | (published; no matching git commit — pre-reconcile drift; the release in which @llblab/pi-telegram was re-added without bundleDependencies, so it hoisted and its tools stopped loading) |
| 0.5.6 | Restored bundleDependencies (correct spelling, all 6 external pi packages listed) and re-added @llblab/pi-telegram to the manifest, fixing the pi-telegram load failure that first appeared after 0.5.5. |
| 0.5.7 | Architecture deepening from the codebase review (no behavior change): deploy-gate + dev-worker state machines moved into pure cores (src/cores.ts), new mutateFile mutation adapter in the tool glue, spec/plan/roster/deploy-order prose anchored to their canonical constants, and the six-agent "Context — where to look" preamble template aligned to the shipped agents. |
License
MIT