Automations
A factory line is Islo’s automation product: multi-stage work with typed routing, loops, schedules, and event triggers. A line (line.toml) orchestrates stages; each stage runs a job (job.toml); jobs execute in sandboxes. Agents do the judgment work.
Do not author manifests from memory. Scaffold jobs with islo job init, then confirm every field against the installed CLI:
Unknown keys 422. Treat every TOML snippet here as a pattern, not a drop-in. Copy a nearby example from islo-labs/islo-agents (examples/) and edit it against the live schema.
For AI agents, install islo-labs/skills. Use the factory-lines skill to build and debug lines; use the platform skill for sandboxes, snapshots, gateway profiles, incoming webhooks, environments, knowledge, and the SDK.
Building blocks
A standalone scheduled or manual job (no line) is the exception. Use it only when there is explicitly one stage and no routing.
factory lines
Standard layout:
A line declares identity, what starts a run, the stages, and the routing between them. Harness, model, params, and outputs live on each stage’s job — not on the line.
Required sections (confirm names and fields with islo schema factory --short):
Reserved stage ids: trigger, done, wait.
Triggers
Schedules live in the line [trigger] and nowhere else. A schedule created in the UI or on a job and then overwritten by the next line deploy is that mistake:
Discover integration events and whether the tenant is connected:
triggers get returns payload shape, selector shape, and example filters. Connect the provider first (islo login --tool slack, GitHub, or Linear) if status shows disconnected.
Line webhook vs incoming webhook:
Deploy order
The line pins each stage’s job_version_id at deploy time. Redeploying a job alone does not update an already-deployed line.
- Knowledge items the line or jobs reference
- Every stage job
- The line last
Smoke-test the first agent stage as a job before the full line is live:
Then run the line:
For integration triggers, fire one real event after deploy (open a test PR, post in the selected channel) and confirm a run appears.
Inspect and steer a run
stop parks a run so you can steer. retry reruns the latest failed stage. Steering an active run returns 409 — stop first.
Jobs (stages)
A job is what one stage executes. Path:
islo schema job returns the machine-readable manifest under job_toml. Control-plane OpenAPI JobManifest is the API source of truth for deploy/validate bodies.
Write params and outputs first — they are the line’s contract. Transitions bind job params from trigger outputs, literals, and prior stages’ outputs.
Policy the schema will not say:
- Harness and model live on the
run_agentstep, never inline.toml. - Do not replace
run_agentwith shell-wrappedclaude/cursor/codexCLIs. - Keep provider tokens out of manifests and sandbox env. Connect integrations (
islo login --tool <provider>) and inject credentials with a gateway profile. - Put the stage brief in the job’s
run_agentprompt so a prompt change is a new job version. If the repo already has skills, check it out with an idempotentexecstep and point at that skill. Bake only supporting or fan-out briefs into the snapshot; do not clone prompts every run. - Do not copy procedural runbooks into Knowledge.
Gateway profiles keep GitHub, Slack, and model credentials out of the sandbox environment by default.
Standalone jobs
Only when you explicitly want a single durable unit of work with no line routing:
A [schedule] block in job.toml is valid for that standalone job. Every param a scheduled run needs must have a default. One active schedule per job; removing it takes effect on the next deploy. If the work grows a second stage, a decision point, or a loop, it is a line — move the schedule to the line [trigger].
Incoming webhooks
Incoming webhooks authenticate an external POST and run sandbox actions (ensure_sandbox, resume_sandbox, trigger_job, deliver to a port, pause, delete). They still need a sandbox target for ingress even when the only action is trigger_job.
Use them for PR preview sandboxes and one-shot job kicks. Use a factory line trigger for anything multi-stage. Auth, targets, rules, and actions: Incoming Webhooks.
Agent guidance
- Install islo-labs/skills (
npx skills add islo-labs/skills). - Follow the factory-lines skill end to end, including the design-approval gate before deploy.
- Clone or browse islo-labs/islo-agents for examples — there is no in-skill copy of those templates.
- Always run
islo schema factory --shortandislo schema job --shortbefore editing manifests. For incoming webhook templates, runislo schema webhook.