@zibby/skills 0.1.33 → 0.1.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/github.js +4 -3
- package/dist/gitlab.js +19 -0
- package/dist/index.js +141 -122
- package/dist/package.json +3 -1
- package/dist/trackers/github-adapter.js +4 -3
- package/dist/trackers/index.js +16 -15
- package/docs/apps/agent-ops.md +6 -6
- package/docs/apps/deploy.md +1 -1
- package/docs/apps/index.md +1 -1
- package/docs/apps/managing.md +1 -1
- package/docs/cli-reference.md +65 -65
- package/docs/cloning-repositories.md +9 -9
- package/docs/cloud/bundles.md +8 -8
- package/docs/cloud/dedicated-egress.md +6 -6
- package/docs/cloud/env-vars.md +29 -29
- package/docs/cloud/limits.md +11 -11
- package/docs/cloud/triggering.md +16 -16
- package/docs/concepts/agents.md +4 -4
- package/docs/concepts/sessions.md +7 -7
- package/docs/concepts/state.md +1 -1
- package/docs/concepts/sub-graphs.md +9 -9
- package/docs/get-started/deploy.md +14 -14
- package/docs/get-started/install.md +4 -4
- package/docs/get-started/run-locally.md +12 -12
- package/docs/get-started/trigger-and-logs.md +14 -14
- package/docs/get-started/use-from-agents.md +17 -17
- package/docs/get-started/your-first-workflow.md +8 -8
- package/docs/integrations/gitlab.md +1 -1
- package/docs/integrations/lark.md +2 -2
- package/docs/integrations/linear.md +1 -1
- package/docs/integrations/notion.md +2 -2
- package/docs/integrations/plane.md +1 -1
- package/docs/integrations/slack.md +1 -1
- package/docs/intro.md +4 -4
- package/docs/legacy/test-automation.md +2 -2
- package/docs/packages/cli.md +11 -11
- package/docs/packages/core.md +2 -2
- package/docs/packages/mcp-cli.md +18 -18
- package/docs/packages/skills.md +2 -2
- package/docs/packages/ui-memory.md +1 -1
- package/docs/recipes/bug-autofix.md +1 -1
- package/docs/recipes/index.md +3 -3
- package/docs/recipes/pipeline-supervisor.md +4 -4
- package/docs/recipes/sentry-triage.md +7 -7
- package/docs/recipes/test.md +6 -6
- package/docs/skills/browser.md +2 -2
- package/docs/skills/chat-memory.md +1 -1
- package/docs/skills/core-tools.md +1 -1
- package/docs/skills/function-skill.md +1 -1
- package/docs/skills/github.md +2 -2
- package/docs/skills/index.md +1 -1
- package/docs/skills/jira.md +1 -1
- package/docs/skills/lark.md +1 -1
- package/docs/skills/memory.md +2 -2
- package/docs/skills/sentry.md +1 -1
- package/docs/skills/slack.md +2 -2
- package/package.json +3 -1
package/docs/cli-reference.md
CHANGED
|
@@ -5,22 +5,22 @@ title: CLI Reference
|
|
|
5
5
|
|
|
6
6
|
# CLI Reference
|
|
7
7
|
|
|
8
|
-
Every command lives under `zibby
|
|
8
|
+
Every command lives under `zibby agent <verb>` for consistency. The bare top-level forms (`zibby start`, `zibby deploy`, `zibby trigger`, `zibby logs`) are kept as backward-compat aliases — they call the same handlers — but new code should use the namespaced forms.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Agent commands
|
|
11
11
|
|
|
12
12
|
| Command | What it does |
|
|
13
13
|
|---|---|
|
|
14
|
-
| [`zibby
|
|
15
|
-
| [`zibby
|
|
16
|
-
| [`zibby
|
|
17
|
-
| [`zibby
|
|
18
|
-
| [`zibby
|
|
19
|
-
| [`zibby
|
|
20
|
-
| [`zibby
|
|
21
|
-
| [`zibby
|
|
22
|
-
| [`zibby
|
|
23
|
-
| [`zibby
|
|
14
|
+
| [`zibby agent new <name>`](#agent-new) | Scaffold a new custom agent under `.zibby/workflows/<name>/`. |
|
|
15
|
+
| [`zibby agent run <name>`](#agent-run) | One-shot local execution. Same input flags as `trigger`. |
|
|
16
|
+
| [`zibby agent list`](#agent-list) | List local + deployed agents. |
|
|
17
|
+
| [`zibby agent deploy [name]`](#agent-deploy) | Deploy to Zibby Cloud. Interactive picker if name omitted. |
|
|
18
|
+
| [`zibby agent trigger [uuid]`](#agent-trigger) | Run a deployed agent remotely. UUID is canonical. |
|
|
19
|
+
| [`zibby agent logs [uuid] -t`](#agent-logs) | Tail logs from a run, Heroku-style. |
|
|
20
|
+
| [`zibby agent download <uuid>`](#agent-download) | Pull a deployed agent back to local. Edit + redeploy. |
|
|
21
|
+
| [`zibby agent delete <uuid>`](#agent-delete) | Delete a deployed agent. |
|
|
22
|
+
| [`zibby agent start <name>`](#agent-start) | Long-lived dev server (Studio integration). Most users want `run`. |
|
|
23
|
+
| [`zibby agent env <verb>`](#agent-env) | Manage per-agent encrypted env vars: `list`, `set`, `unset`, `push`. |
|
|
24
24
|
|
|
25
25
|
Plus the test recipe + memory + project setup:
|
|
26
26
|
|
|
@@ -28,8 +28,8 @@ Plus the test recipe + memory + project setup:
|
|
|
28
28
|
|---|---|
|
|
29
29
|
| [`zibby test [spec]`](#test) | Run a test spec (or inline string). Drives the browser via Cursor / Claude / Codex / Gemini. |
|
|
30
30
|
| [`zibby memory <verb>`](#memory) | Local + remote test-memory DB: `init`, `stats`, `cost`, `compact`, `reset`, `pull`, `push`, `remote …`. |
|
|
31
|
-
| [`zibby init [project]`](#init) | Bootstrap a Zibby project (config + creds). `-t <template>` to also scaffold
|
|
32
|
-
| [`zibby template <verb>`](#template) | List or add
|
|
31
|
+
| [`zibby init [project]`](#init) | Bootstrap a Zibby project (config + creds). `-t <template>` to also scaffold an agent. |
|
|
32
|
+
| [`zibby template <verb>`](#template) | List or add agent templates: `list`, `add <name>`. |
|
|
33
33
|
|
|
34
34
|
Auth + admin:
|
|
35
35
|
|
|
@@ -40,10 +40,10 @@ Auth + admin:
|
|
|
40
40
|
| `zibby status` | Show current auth state. |
|
|
41
41
|
| `zibby list` | List projects + API tokens you have access to. |
|
|
42
42
|
|
|
43
|
-
##
|
|
43
|
+
## agent new {#agent-new}
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
zibby
|
|
46
|
+
zibby agent new [name]
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
Scaffolds `.zibby/workflows/<name>/` with a starter `graph.mjs`, `nodes/example.mjs`, `package.json`, and `workflow.json` manifest. Auto-runs `npm install` in the new folder unless `--skip-install`.
|
|
@@ -52,15 +52,15 @@ Options:
|
|
|
52
52
|
- `--skip-install` — skip `npm install`
|
|
53
53
|
- If `name` is omitted, the CLI generates one (`zealous-otter`, etc.)
|
|
54
54
|
|
|
55
|
-
##
|
|
55
|
+
## agent run {#agent-run}
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
|
-
zibby
|
|
58
|
+
zibby agent run <agent-name>
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
Loads `graph.mjs`, instantiates the entry class, runs the graph **once** in-process, prints results, and exits. Output → `.zibby/output/sessions/<sessionId>/`.
|
|
62
62
|
|
|
63
|
-
Mirrors `zibby
|
|
63
|
+
Mirrors `zibby agent trigger` so the same input flags work locally and in the cloud — flip the verb and the project, and your local dev loop is exactly the same call shape your CI/CD uses.
|
|
64
64
|
|
|
65
65
|
Options:
|
|
66
66
|
- `-p, --param <key=value>` — input param (repeatable, highest precedence). Example: `-p ticket=BUG-123 -p priority=high`
|
|
@@ -69,40 +69,40 @@ Options:
|
|
|
69
69
|
|
|
70
70
|
Examples:
|
|
71
71
|
```bash
|
|
72
|
-
zibby
|
|
73
|
-
zibby
|
|
74
|
-
zibby
|
|
75
|
-
zibby
|
|
72
|
+
zibby agent run my-agent
|
|
73
|
+
zibby agent run my-agent -p ticket=BUG-123
|
|
74
|
+
zibby agent run my-agent --input '{"ticket":"BUG-123","priority":"high"}'
|
|
75
|
+
zibby agent run my-agent --input-file payload.json -p priority=urgent
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
##
|
|
78
|
+
## agent start {#agent-start}
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
|
-
zibby
|
|
81
|
+
zibby agent start <agent-name>
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
-
Long-lived local dev server (default port 3848). Listens on `POST /trigger` for input payloads and runs the
|
|
84
|
+
Long-lived local dev server (default port 3848). Listens on `POST /trigger` for input payloads and runs the agent in-process. Used today by the Studio desktop app — for plain CLI use, prefer `agent run`.
|
|
85
85
|
|
|
86
86
|
Options:
|
|
87
87
|
- `-p, --port <port>` — override the default port (3848)
|
|
88
88
|
|
|
89
|
-
##
|
|
89
|
+
## agent list {#agent-list}
|
|
90
90
|
|
|
91
91
|
```bash
|
|
92
|
-
zibby
|
|
92
|
+
zibby agent list
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
Shows both local
|
|
95
|
+
Shows both local agents (folders under `.zibby/workflows/`) and deployed ones (from cloud, scoped to projects you have access to). Output is a table with UUID, Name, Project, Version. `-` in any column means "not applicable" (e.g. local-only agents have no UUID yet).
|
|
96
96
|
|
|
97
97
|
Options:
|
|
98
98
|
- `--local-only` — skip the cloud query
|
|
99
99
|
- `--remote-only` — skip the local scan
|
|
100
100
|
- `--project <id>` — filter to one project
|
|
101
101
|
|
|
102
|
-
##
|
|
102
|
+
## agent deploy {#agent-deploy}
|
|
103
103
|
|
|
104
104
|
```bash
|
|
105
|
-
zibby
|
|
105
|
+
zibby agent deploy [agent-name]
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
Two phases:
|
|
@@ -114,16 +114,16 @@ After success, the CLI writes `.zibby/workflows/<name>/.zibby-deploy.json` with
|
|
|
114
114
|
Options:
|
|
115
115
|
- `--project <id>` — skip the project picker
|
|
116
116
|
- `--api-key <key>` — auth via API key (or set `ZIBBY_API_KEY`)
|
|
117
|
-
- `--env <path>` — sync a `.env` file into per-
|
|
117
|
+
- `--env <path>` — sync a `.env` file into per-agent env vars after deploy. Repeatable (later files override). See [Per-agent env vars](./cloud/env-vars).
|
|
118
118
|
- `--verbose` — show raw CodeBuild logs during the bundle build
|
|
119
119
|
|
|
120
|
-
##
|
|
120
|
+
## agent trigger {#agent-trigger}
|
|
121
121
|
|
|
122
122
|
```bash
|
|
123
|
-
zibby
|
|
123
|
+
zibby agent trigger <uuid>
|
|
124
124
|
```
|
|
125
125
|
|
|
126
|
-
UUID is required (or omit for interactive picker). Names aren't accepted — pass the UUID from `.zibby-deploy.json` or `
|
|
126
|
+
UUID is required (or omit for interactive picker). Names aren't accepted — pass the UUID from `.zibby-deploy.json` or `agent list`.
|
|
127
127
|
|
|
128
128
|
Options:
|
|
129
129
|
- `-p, --param <key=value>` — input param (repeatable, highest precedence)
|
|
@@ -132,14 +132,14 @@ Options:
|
|
|
132
132
|
- `--idempotency-key <key>` — prevent duplicate executions
|
|
133
133
|
- `--api-key <key>` — auth via API key
|
|
134
134
|
|
|
135
|
-
##
|
|
135
|
+
## agent logs {#agent-logs}
|
|
136
136
|
|
|
137
137
|
```bash
|
|
138
|
-
zibby
|
|
139
|
-
zibby
|
|
138
|
+
zibby agent logs <uuid> # dump latest run
|
|
139
|
+
zibby agent logs <uuid> -t # tail live (Heroku-style)
|
|
140
140
|
```
|
|
141
141
|
|
|
142
|
-
When `-t` is set and the
|
|
142
|
+
When `-t` is set and the agent finishes, the stream waits for the next trigger of the same agent and auto-switches to streaming it. Ctrl+C to exit.
|
|
143
143
|
|
|
144
144
|
Options:
|
|
145
145
|
- `-t, --follow` — live tail
|
|
@@ -147,43 +147,43 @@ Options:
|
|
|
147
147
|
- `--all --workflow <name>` — interleaved logs from all runs (requires `--workflow`)
|
|
148
148
|
- `--api-key <key>` — auth via API key
|
|
149
149
|
|
|
150
|
-
**Storage & retention.** Live logs are kept in CloudWatch for 30 days. Beyond that, the per-run session folder (uploaded to S3 at the end of every execution) is the long-term archive — pull it back with `zibby
|
|
150
|
+
**Storage & retention.** Live logs are kept in CloudWatch for 30 days. Beyond that, the per-run session folder (uploaded to S3 at the end of every execution) is the long-term archive — pull it back with `zibby agent download <uuid>`.
|
|
151
151
|
|
|
152
|
-
##
|
|
152
|
+
## agent env {#agent-env}
|
|
153
153
|
|
|
154
|
-
Per-
|
|
154
|
+
Per-agent encrypted env vars — KMS-stored on the agent record, injected into the Fargate task at trigger time. Agent env wins over project secrets on conflict.
|
|
155
155
|
|
|
156
156
|
```bash
|
|
157
|
-
zibby
|
|
158
|
-
zibby
|
|
159
|
-
zibby
|
|
160
|
-
zibby
|
|
157
|
+
zibby agent env list <uuid> # show key names (no values)
|
|
158
|
+
zibby agent env set <uuid> ANTHROPIC_API_KEY=sk-… # add or rotate one
|
|
159
|
+
zibby agent env unset <uuid> OLD_KEY # remove one
|
|
160
|
+
zibby agent env push <uuid> --file .env [--file .env.prod] # bulk replace from .env files
|
|
161
161
|
```
|
|
162
162
|
|
|
163
163
|
`push` accepts repeatable `--file` (later files override). `list` only ever returns key names — values never leave the encrypted blob.
|
|
164
164
|
|
|
165
|
-
The shortcut for first-time setup is `zibby
|
|
165
|
+
The shortcut for first-time setup is `zibby agent deploy --env .env`, which runs `push` automatically against the new UUID. Full guide: [Per-agent env vars](./cloud/env-vars).
|
|
166
166
|
|
|
167
|
-
##
|
|
167
|
+
## agent download {#agent-download}
|
|
168
168
|
|
|
169
169
|
```bash
|
|
170
|
-
zibby
|
|
170
|
+
zibby agent download <uuid>
|
|
171
171
|
```
|
|
172
172
|
|
|
173
|
-
Pulls the deployed
|
|
173
|
+
Pulls the deployed agent's sources back into `.zibby/workflows/<name>/`, including the `.zibby-deploy.json` manifest. Useful when collaborators need the source from cloud.
|
|
174
174
|
|
|
175
175
|
Options:
|
|
176
|
-
- `--type <type>` — for built-in
|
|
176
|
+
- `--type <type>` — for built-in agents (`analysis`, `implementation`, `run_test`)
|
|
177
177
|
- `--output <dir>` — alternate output base
|
|
178
178
|
- `--include-default` — pull the built-in default graph if no custom one exists
|
|
179
179
|
|
|
180
|
-
##
|
|
180
|
+
## agent delete {#agent-delete}
|
|
181
181
|
|
|
182
182
|
```bash
|
|
183
|
-
zibby
|
|
183
|
+
zibby agent delete <uuid>
|
|
184
184
|
```
|
|
185
185
|
|
|
186
|
-
Removes the
|
|
186
|
+
Removes the agent from cloud (and its trigger URL). Local files are not touched.
|
|
187
187
|
|
|
188
188
|
## test {#test}
|
|
189
189
|
|
|
@@ -240,10 +240,10 @@ zibby init [project-name]
|
|
|
240
240
|
zibby init -t browser-test-automation # also scaffold the test recipe
|
|
241
241
|
```
|
|
242
242
|
|
|
243
|
-
Bare init by default — writes `.zibby.config.mjs`, sets up agent credentials, configures memory. Pass `-t <template>` to also scaffold
|
|
243
|
+
Bare init by default — writes `.zibby.config.mjs`, sets up agent credentials, configures memory. Pass `-t <template>` to also scaffold an agent template into `.zibby/`.
|
|
244
244
|
|
|
245
245
|
Common options:
|
|
246
|
-
- `-t, --template <name>` —
|
|
246
|
+
- `-t, --template <name>` — agent template to scaffold (see `zibby template list`). Default: none (config + creds only).
|
|
247
247
|
- `--agent <claude|cursor|codex|gemini>` — pick the agent up front instead of prompting
|
|
248
248
|
- `--memory-backend <mem0|dolt>` — memory backend (default: `mem0` — semantic vector memory, billed through the agent run in cloud, falls back to `dolt` if the embedding proxy is unavailable; pass `dolt` for self-contained structured memory — see [Chat memory](./skills/chat-memory.md))
|
|
249
249
|
- `--skip-install` / `--skip-memory` — skip `npm install` / skip memory setup
|
|
@@ -258,7 +258,7 @@ zibby template list # see what's available
|
|
|
258
258
|
zibby template add <name> # copy template into .zibby/ (overwrites = doubles as update)
|
|
259
259
|
```
|
|
260
260
|
|
|
261
|
-
Templates are starter
|
|
261
|
+
Templates are starter agent scaffolds. `add` overwrites existing files in place — use it to upgrade an outdated agent helpers block, or to grab a recipe you didn't pick at `init` time.
|
|
262
262
|
|
|
263
263
|
`zibby template add zibby-workflow-claude` (or `-cursor`, `-codex`) refreshes the per-agent guidance files emitted by this template — the `<!-- zibby-template-version: N -->` markers make the upgrade idempotent.
|
|
264
264
|
|
|
@@ -442,20 +442,20 @@ Drains the ECS service, deletes the task definition revision, removes the ALB li
|
|
|
442
442
|
| `ZIBBY_API_KEY` | API key for non-interactive auth (CI). Preferred over saved session. |
|
|
443
443
|
| `ZIBBY_PROJECT_ID` | Default project for commands that take `--project` |
|
|
444
444
|
| `AGENT_TYPE` | Default agent strategy when no per-node override and no project default |
|
|
445
|
-
| `ZIBBY_DEPLOY_VERBOSE=1` | Same as `--verbose` on `
|
|
445
|
+
| `ZIBBY_DEPLOY_VERBOSE=1` | Same as `--verbose` on `agent deploy` |
|
|
446
446
|
| `ZIBBY_SESSION_LOG=1` | Re-enable the diagnostic `[zibby:session]` log line in run output |
|
|
447
447
|
| `ZIBBY_RUN_DIAG=1` | Cloud runtime: dump per-copy `agent-workflow` registry state |
|
|
448
448
|
| `ZIBBY_DEBUG=true` | Verbose debug logs from the framework |
|
|
449
449
|
|
|
450
450
|
## Legacy aliases
|
|
451
451
|
|
|
452
|
-
These still work and route to the same handlers, but new code should use the `zibby workflow <verb>`
|
|
452
|
+
These still work and route to the same handlers, but new code should use the `zibby agent <verb>` form. The `zibby workflow <verb>` namespace also remains a full alias for `zibby agent <verb>`:
|
|
453
453
|
|
|
454
454
|
| Legacy | Canonical |
|
|
455
455
|
|---|---|
|
|
456
|
-
| `zibby g workflow <name>` | `zibby
|
|
457
|
-
| `zibby start <name>` | `zibby
|
|
458
|
-
| `zibby run <name>` | `zibby
|
|
459
|
-
| `zibby deploy [name]` | `zibby
|
|
460
|
-
| `zibby trigger <uuid>` | `zibby
|
|
461
|
-
| `zibby logs <uuid>` | `zibby
|
|
456
|
+
| `zibby g workflow <name>` | `zibby agent new <name>` |
|
|
457
|
+
| `zibby start <name>` | `zibby agent start <name>` |
|
|
458
|
+
| `zibby run <name>` | `zibby agent run <name>` |
|
|
459
|
+
| `zibby deploy [name]` | `zibby agent deploy [name]` |
|
|
460
|
+
| `zibby trigger <uuid>` | `zibby agent trigger <uuid>` |
|
|
461
|
+
| `zibby logs <uuid>` | `zibby agent logs <uuid>` |
|
|
@@ -3,13 +3,13 @@ sidebar_position: 8
|
|
|
3
3
|
title: Cloning Repositories
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Cloning Repositories in Custom
|
|
6
|
+
# Cloning Repositories in Custom Agents
|
|
7
7
|
|
|
8
|
-
Custom
|
|
8
|
+
Custom agents can clone your project's configured repositories (GitHub/GitLab) using the `cloneRepo()` helper function from `@zibby/core`.
|
|
9
9
|
|
|
10
10
|
## Overview
|
|
11
11
|
|
|
12
|
-
When your
|
|
12
|
+
When your agent runs in the cloud, it has access to:
|
|
13
13
|
- All repositories configured in your project settings (GitHub/GitLab)
|
|
14
14
|
- Authenticated tokens for cloning (injected securely by the platform)
|
|
15
15
|
- A clean isolated container environment
|
|
@@ -135,9 +135,9 @@ If a repository fails to clone, its value will be `null`:
|
|
|
135
135
|
}
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
-
## Complete Example
|
|
138
|
+
## Complete Example Agent
|
|
139
139
|
|
|
140
|
-
Here's a full
|
|
140
|
+
Here's a full agent that clones repos and runs analysis:
|
|
141
141
|
|
|
142
142
|
```javascript
|
|
143
143
|
// graph.mjs
|
|
@@ -224,11 +224,11 @@ Return a comprehensive security audit report.`;
|
|
|
224
224
|
## How It Works
|
|
225
225
|
|
|
226
226
|
1. **Project Configuration**: You configure repositories in your project settings (Web UI)
|
|
227
|
-
2. **Secure Token Injection**: When the
|
|
227
|
+
2. **Secure Token Injection**: When the agent runs, Zibby injects:
|
|
228
228
|
- `REPOS` env var (array of repo metadata with clone URLs)
|
|
229
229
|
- `GITHUB_TOKEN` and/or `GITLAB_TOKEN` (OAuth tokens for authentication)
|
|
230
230
|
3. **Authenticated Clone**: `cloneRepo()` constructs authenticated URLs and clones via `git clone`
|
|
231
|
-
4. **Isolation**: Each
|
|
231
|
+
4. **Isolation**: Each agent run gets a fresh container with no cached state
|
|
232
232
|
|
|
233
233
|
## Supported Platforms
|
|
234
234
|
|
|
@@ -269,7 +269,7 @@ Common failure reasons:
|
|
|
269
269
|
|
|
270
270
|
## Local Development
|
|
271
271
|
|
|
272
|
-
When running
|
|
272
|
+
When running agents locally (`zibby agent run`), you'll need to:
|
|
273
273
|
1. Set `REPOS` env var manually (JSON array)
|
|
274
274
|
2. Provide `GITHUB_TOKEN` or `GITLAB_TOKEN`
|
|
275
275
|
3. Ensure `git` is installed
|
|
@@ -279,7 +279,7 @@ Example for local testing:
|
|
|
279
279
|
```bash
|
|
280
280
|
export REPOS='[{"name":"myorg/backend","provider":"github","cloneUrl":"https://github.com/myorg/backend.git"}]'
|
|
281
281
|
export GITHUB_TOKEN="ghp_your_token"
|
|
282
|
-
zibby
|
|
282
|
+
zibby agent run my-agent
|
|
283
283
|
```
|
|
284
284
|
|
|
285
285
|
In production (cloud), these are injected automatically.
|
package/docs/cloud/bundles.md
CHANGED
|
@@ -5,12 +5,12 @@ title: Bundle build (Heroku-style)
|
|
|
5
5
|
|
|
6
6
|
# Bundle build
|
|
7
7
|
|
|
8
|
-
When you `zibby
|
|
8
|
+
When you `zibby agent deploy`, two things happen:
|
|
9
9
|
|
|
10
|
-
1. **Source upload** — your
|
|
10
|
+
1. **Source upload** — your agent folder (sources only, no `node_modules`) is sent to S3 via a presigned PUT URL. The CLI does this; the backend never has S3 IAM credentials for your account's bucket.
|
|
11
11
|
2. **Bundle build** — a CodeBuild job downloads the sources, runs `npm install --omit=dev`, packages a tarball, uploads it back to S3.
|
|
12
12
|
|
|
13
|
-
The tarball is what the cloud runtime downloads at trigger time. **No `npm install` happens at runtime** —
|
|
13
|
+
The tarball is what the cloud runtime downloads at trigger time. **No `npm install` happens at runtime** — agents boot in seconds regardless of dependency tree size.
|
|
14
14
|
|
|
15
15
|
## What's in the bundle
|
|
16
16
|
|
|
@@ -41,7 +41,7 @@ export default {
|
|
|
41
41
|
|
|
42
42
|
## Why this matters
|
|
43
43
|
|
|
44
|
-
Without bundling, every cloud trigger would run `npm install` inside the ECS task. For a typical
|
|
44
|
+
Without bundling, every cloud trigger would run `npm install` inside the ECS task. For a typical agent with `@zibby/core` + a few skills, that's 30–90 seconds per cold start. With the bundle:
|
|
45
45
|
|
|
46
46
|
```
|
|
47
47
|
trigger → tarball download (3s) → graph.run() → done
|
|
@@ -64,23 +64,23 @@ Pass `--verbose` (or set `ZIBBY_DEPLOY_VERBOSE=1`) to see the raw CodeBuild logs
|
|
|
64
64
|
|
|
65
65
|
## Re-deploys reuse the bundle path
|
|
66
66
|
|
|
67
|
-
The bundle URL is keyed by
|
|
67
|
+
The bundle URL is keyed by agent UUID — re-deploys overwrite the previous bundle. Old executions in flight finish against the *previous* bundle (no rug-pull) because each ECS task downloads the tarball at the moment it starts.
|
|
68
68
|
|
|
69
69
|
## Security model
|
|
70
70
|
|
|
71
71
|
The CodeBuild role has **zero S3 IAM permissions**. It receives presigned GET (for sources) and PUT (for bundle) URLs as build-time env vars. URLs are scoped to single keys, expire after 15 minutes.
|
|
72
72
|
|
|
73
|
-
This means a malicious `postinstall` script in
|
|
73
|
+
This means a malicious `postinstall` script in an agent's `package.json` can't escape its sandbox to read other customers' bundles or sources.
|
|
74
74
|
|
|
75
75
|
## Bundle size
|
|
76
76
|
|
|
77
77
|
Typical: 100–200 MB compressed. Mostly node_modules. The bundle includes everything `npm install --omit=dev` produces — runtime deps only, no dev deps.
|
|
78
78
|
|
|
79
|
-
To slim it: audit your
|
|
79
|
+
To slim it: audit your agent's `package.json` for unused deps, and prefer the lightest agent SDK that does the job.
|
|
80
80
|
|
|
81
81
|
## Source-fetch fallback
|
|
82
82
|
|
|
83
|
-
If the bundle is missing or fails to extract, the cloud runtime falls back to source-fetch + runtime `npm install`. Slower, but
|
|
83
|
+
If the bundle is missing or fails to extract, the cloud runtime falls back to source-fetch + runtime `npm install`. Slower, but agents still run. You'll see this in logs:
|
|
84
84
|
|
|
85
85
|
```
|
|
86
86
|
[setup] Bundle extract failed (...); falling back to source install
|
|
@@ -5,12 +5,12 @@ title: Dedicated egress IP
|
|
|
5
5
|
|
|
6
6
|
# Dedicated egress IP
|
|
7
7
|
|
|
8
|
-
By default, every Zibby
|
|
9
|
-
For most customers that's fine — but if your
|
|
8
|
+
By default, every Zibby agent exits via a random AWS IP that changes every run.
|
|
9
|
+
For most customers that's fine — but if your agent needs to talk to a service
|
|
10
10
|
behind a firewall (private GitLab, Salesforce, Oracle Cloud, internal API behind a
|
|
11
11
|
corporate VPN), the random-IP behavior makes it unusable.
|
|
12
12
|
|
|
13
|
-
The **dedicated egress IP** addon pins all your
|
|
13
|
+
The **dedicated egress IP** addon pins all your agent's outbound traffic to a
|
|
14
14
|
single static IP that you can whitelist once on the destination service.
|
|
15
15
|
|
|
16
16
|
## Pricing
|
|
@@ -34,11 +34,11 @@ single static IP that you can whitelist once on the destination service.
|
|
|
34
34
|
Internet (sees your static IP, e.g. 54.66.241.180)
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
Every outbound HTTPS call from your
|
|
37
|
+
Every outbound HTTPS call from your agent exits via your dedicated IP:
|
|
38
38
|
|
|
39
39
|
| What | Whether it tunnels |
|
|
40
40
|
|---|---|
|
|
41
|
-
| `fetch()` from
|
|
41
|
+
| `fetch()` from agent code | ✅ via static IP |
|
|
42
42
|
| `git clone` private repos | ✅ via static IP |
|
|
43
43
|
| `npm install` from private registries | ✅ via static IP |
|
|
44
44
|
| `curl` / `wget` in shell scripts | ✅ via static IP |
|
|
@@ -110,7 +110,7 @@ Your IP is **stable for as long as you have the addon enabled**:
|
|
|
110
110
|
|
|
111
111
|
- Survives Zibby infrastructure changes (we replace proxy boxes regularly)
|
|
112
112
|
- Survives our region failovers
|
|
113
|
-
- Survives your own
|
|
113
|
+
- Survives your own agent redeploys
|
|
114
114
|
|
|
115
115
|
The only way the IP changes is if **you** disable the addon, in which case the IP
|
|
116
116
|
is released back to AWS at the end of your billing period.
|
package/docs/cloud/env-vars.md
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
sidebar_position: 4
|
|
3
|
-
title: Per-
|
|
3
|
+
title: Per-agent env vars
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Per-
|
|
6
|
+
# Per-agent env vars
|
|
7
7
|
|
|
8
|
-
Each deployed
|
|
8
|
+
Each deployed agent has its own encrypted env-var bag. The cloud runtime injects those vars into the Fargate task that runs the agent — they show up in `process.env` like any other env var.
|
|
9
9
|
|
|
10
|
-
Use this for credentials that are **specific to one
|
|
10
|
+
Use this for credentials that are **specific to one agent** — different `ANTHROPIC_API_KEY` per agent, an agent-only `DATABASE_URL`, an external webhook secret. Project-wide secrets stay on the project record (set in dashboard); agent env wins on conflict.
|
|
11
11
|
|
|
12
12
|
## The fast path: `--env` at deploy
|
|
13
13
|
|
|
14
|
-
Most users want to ship a `.env` alongside the
|
|
14
|
+
Most users want to ship a `.env` alongside the agent:
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
zibby
|
|
17
|
+
zibby agent deploy my-agent --env .env
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
The CLI deploys the
|
|
20
|
+
The CLI deploys the agent as usual, then syncs the `.env` into per-agent env vars. You'll see:
|
|
21
21
|
|
|
22
22
|
```
|
|
23
|
-
✔ Deployed my-
|
|
23
|
+
✔ Deployed my-agent (v1)
|
|
24
24
|
✔ Bundle ready (78s)
|
|
25
25
|
✔ Synced 4 env vars from .env
|
|
26
26
|
```
|
|
@@ -28,21 +28,21 @@ The CLI deploys the workflow as usual, then syncs the `.env` into per-workflow e
|
|
|
28
28
|
Multiple files merge with later wins (mirrors how dotenv libraries usually layer):
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
-
zibby
|
|
31
|
+
zibby agent deploy my-agent --env .env --env .env.prod
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
## Manage after deploy: `zibby
|
|
34
|
+
## Manage after deploy: `zibby agent env`
|
|
35
35
|
|
|
36
|
-
Four verbs, all keyed by the
|
|
36
|
+
Four verbs, all keyed by the agent UUID (from `zibby agent list` or `.zibby-deploy.json`):
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
zibby
|
|
40
|
-
zibby
|
|
41
|
-
zibby
|
|
42
|
-
zibby
|
|
39
|
+
zibby agent env list <uuid> # show key names (no values)
|
|
40
|
+
zibby agent env set <uuid> ANTHROPIC_API_KEY=sk-… # add or rotate one
|
|
41
|
+
zibby agent env unset <uuid> OLD_KEY # remove one
|
|
42
|
+
zibby agent env push <uuid> --file .env [--file .env.prod] # bulk replace
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
`set` is for surgical updates — leaves every other key alone. `push` is the deploy-flow `--env` exposed as a standalone command for when you want to update env without redeploying the
|
|
45
|
+
`set` is for surgical updates — leaves every other key alone. `push` is the deploy-flow `--env` exposed as a standalone command for when you want to update env without redeploying the agent itself.
|
|
46
46
|
|
|
47
47
|
`list` only returns key names, never values. Once you set a value, the only place it surfaces is inside the running container.
|
|
48
48
|
|
|
@@ -50,19 +50,19 @@ zibby workflow env push <uuid> --file .env [--file .env.prod] # bulk replace
|
|
|
50
50
|
|
|
51
51
|
Rotate one key:
|
|
52
52
|
```bash
|
|
53
|
-
zibby
|
|
53
|
+
zibby agent env set 1a255ded-9f57-44ad-81cf-70726b13d653 ANTHROPIC_API_KEY=sk-ant-rotated
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
Wipe all env on
|
|
56
|
+
Wipe all env on an agent (push an empty file):
|
|
57
57
|
```bash
|
|
58
|
-
zibby
|
|
58
|
+
zibby agent env push <uuid> --file /dev/null
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
CI rotation (GitHub Actions):
|
|
62
62
|
```yaml
|
|
63
63
|
- run: |
|
|
64
64
|
echo "ANTHROPIC_API_KEY=$ANTHROPIC_KEY" > .env.cd
|
|
65
|
-
npx @zibby/cli
|
|
65
|
+
npx @zibby/cli agent env push $WORKFLOW_UUID --file .env.cd
|
|
66
66
|
env:
|
|
67
67
|
ANTHROPIC_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
68
68
|
WORKFLOW_UUID: ${{ vars.WORKFLOW_UUID }}
|
|
@@ -74,10 +74,10 @@ CI rotation (GitHub Actions):
|
|
|
74
74
|
When a Fargate task starts, env vars come from three layers (later wins):
|
|
75
75
|
|
|
76
76
|
```
|
|
77
|
-
built-in container vars → project secrets (DDB) →
|
|
77
|
+
built-in container vars → project secrets (DDB) → agent env (DDB)
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
So if both your project record and your
|
|
80
|
+
So if both your project record and your agent env define `ANTHROPIC_API_KEY`, the agent's value is what `process.env.ANTHROPIC_API_KEY` returns inside the run.
|
|
81
81
|
|
|
82
82
|
## Validation
|
|
83
83
|
|
|
@@ -87,11 +87,11 @@ So if both your project record and your workflow env define `ANTHROPIC_API_KEY`,
|
|
|
87
87
|
| Value | Any string. Empty string is allowed. |
|
|
88
88
|
| `.env` files | Standard dotenv syntax — comments, quoted values, blank lines, `KEY=value` per line. |
|
|
89
89
|
|
|
90
|
-
The CLI validates locally before the API round-trip, so `zibby
|
|
90
|
+
The CLI validates locally before the API round-trip, so `zibby agent env set <uuid> lowercase=v` fails fast with a readable message instead of a 400.
|
|
91
91
|
|
|
92
|
-
## Use case: multi-
|
|
92
|
+
## Use case: multi-vendor agents
|
|
93
93
|
|
|
94
|
-
Different nodes in the same
|
|
94
|
+
Different nodes in the same agent may want to call different model vendors:
|
|
95
95
|
|
|
96
96
|
```js
|
|
97
97
|
// graph.mjs
|
|
@@ -110,7 +110,7 @@ CURSOR_API_KEY=key_...
|
|
|
110
110
|
OPENAI_API_KEY=sk-...
|
|
111
111
|
EOF
|
|
112
112
|
|
|
113
|
-
zibby
|
|
113
|
+
zibby agent deploy multi-agent --env .env
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
Each agent reads its own env var when invoked. No prompt-stuffing keys, no per-node config.
|
|
@@ -118,13 +118,13 @@ Each agent reads its own env var when invoked. No prompt-stuffing keys, no per-n
|
|
|
118
118
|
## Security model
|
|
119
119
|
|
|
120
120
|
- **Encryption**: KMS envelope encryption with per-account keys. The plaintext never lands in CloudWatch, DDB, or Lambda logs.
|
|
121
|
-
- **Access control**: every env command needs project-level access on the
|
|
121
|
+
- **Access control**: every env command needs project-level access on the agent's project — checked on every request.
|
|
122
122
|
- **Audit**: KMS logs every decrypt operation. Cross-reference with `WORKFLOW_JOB_ID` to see exactly which run pulled which secret.
|
|
123
|
-
- **Rotation**: `zibby
|
|
123
|
+
- **Rotation**: `zibby agent env set` with a new value — the next triggered run picks it up. Currently in-flight runs keep using the value they decrypted at start time.
|
|
124
124
|
|
|
125
125
|
## What this is *not*
|
|
126
126
|
|
|
127
|
-
- **Not for the project's primary credentials** — those live on the project record (dashboard → Project → Secrets). Use
|
|
127
|
+
- **Not for the project's primary credentials** — those live on the project record (dashboard → Project → Secrets). Use agent env for *agent-specific* overrides.
|
|
128
128
|
- **Not a values-readable store** — `list` returns key names only. If you need to retrieve the value, you'll have to push it again. This is intentional.
|
|
129
129
|
- **Not 1Password / Vault** — no rotation policies, no version history. Plain CRUD.
|
|
130
130
|
|
package/docs/cloud/limits.md
CHANGED
|
@@ -5,24 +5,24 @@ title: Limits & quotas
|
|
|
5
5
|
|
|
6
6
|
# Limits & quotas
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## Agent runtime cap
|
|
9
9
|
|
|
10
|
-
Every
|
|
10
|
+
Every agent execution has a **30-minute hard cap**. If an agent exceeds it, the
|
|
11
11
|
container is terminated with exit code `124` (timeout) and the execution is marked
|
|
12
12
|
`failed` with reason `TIMEOUT`.
|
|
13
13
|
|
|
14
14
|
Why this exists:
|
|
15
|
-
- Stops runaway
|
|
15
|
+
- Stops runaway agents (infinite loops, hung HTTP calls, stuck npm installs)
|
|
16
16
|
from burning unbounded compute
|
|
17
17
|
- Predictable per-execution cost ceiling
|
|
18
18
|
- Industry standard — GitHub Actions defaults to 6 hours, GitLab CI defaults to
|
|
19
19
|
1 hour, Vercel functions cap at 5 minutes. We picked 30 min as the sweet spot
|
|
20
|
-
for AI-driven
|
|
20
|
+
for AI-driven agents
|
|
21
21
|
|
|
22
|
-
If your
|
|
22
|
+
If your agent needs to run longer:
|
|
23
23
|
- Split it into multiple shorter executions chained via input/output
|
|
24
24
|
- Move long-running work (large npm installs, video processing) into your bundled
|
|
25
|
-
artifact at deploy time so the
|
|
25
|
+
artifact at deploy time so the agent itself stays short
|
|
26
26
|
- Contact us about a Pro tier with a longer cap
|
|
27
27
|
|
|
28
28
|
The cap is enforced **inside** the container by a watchdog timer set on startup,
|
|
@@ -43,7 +43,7 @@ marked failed.
|
|
|
43
43
|
|
|
44
44
|
## Container freedom (what you CAN do)
|
|
45
45
|
|
|
46
|
-
Inside your container, your
|
|
46
|
+
Inside your container, your agent has **full control**:
|
|
47
47
|
|
|
48
48
|
- Install any npm package (`npm install`, `pip install`, `apt install` if root)
|
|
49
49
|
- Run any shell command (`curl`, `git`, `docker`-in-docker not supported)
|
|
@@ -58,7 +58,7 @@ no side effects on Zibby infrastructure.
|
|
|
58
58
|
|
|
59
59
|
| Boundary | Why |
|
|
60
60
|
|---|---|
|
|
61
|
-
| Talk to other customers'
|
|
61
|
+
| Talk to other customers' agents | Each task is a separate isolated container |
|
|
62
62
|
| Use someone else's static IP | Only your account's IP is reachable from your task |
|
|
63
63
|
| Run beyond the 30-min cap | Watchdog kills the process |
|
|
64
64
|
| Read Zibby infra secrets | Container IAM role only sees your execution data |
|
|
@@ -66,7 +66,7 @@ no side effects on Zibby infrastructure.
|
|
|
66
66
|
|
|
67
67
|
## Outbound network
|
|
68
68
|
|
|
69
|
-
By default your
|
|
69
|
+
By default your agent exits via a random AWS IP that changes every run. If you
|
|
70
70
|
need a stable IP for whitelisting customer firewalls, see
|
|
71
71
|
[Dedicated egress IP](./dedicated-egress) ($50/mo addon).
|
|
72
72
|
|
|
@@ -74,8 +74,8 @@ need a stable IP for whitelisting customer firewalls, see
|
|
|
74
74
|
|
|
75
75
|
| Endpoint | Limit |
|
|
76
76
|
|---|---|
|
|
77
|
-
| Trigger
|
|
77
|
+
| Trigger agent | 60/min per account |
|
|
78
78
|
| Read logs | 600/min per account |
|
|
79
|
-
| Deploy
|
|
79
|
+
| Deploy agent | 30/hour per account |
|
|
80
80
|
|
|
81
81
|
Hitting a rate limit returns `429 Too Many Requests` with a `Retry-After` header.
|