@zibby/skills 0.2.22 → 0.2.24
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/browser.js +3 -10
- package/dist/code-scan.d.ts +1 -1
- package/dist/index.js +81 -88
- package/dist/jira.d.ts +75 -9
- package/dist/jira.js +4 -4
- package/dist/package.json +1 -1
- package/dist/report.d.ts +51 -276
- package/dist/trackers/index.js +12 -12
- package/dist/trackers/jira-adapter.js +11 -11
- package/package.json +1 -1
- package/docs/analysis.md +0 -109
- package/docs/apps/agent-ops.md +0 -130
- package/docs/apps/auth.md +0 -158
- package/docs/apps/deploy.md +0 -207
- package/docs/apps/goal-mode.md +0 -175
- package/docs/apps/index.md +0 -149
- package/docs/apps/managing.md +0 -121
- package/docs/cli-reference.md +0 -494
- package/docs/cloning-repositories.md +0 -285
- package/docs/cloud/bundles.md +0 -92
- package/docs/cloud/dedicated-egress.md +0 -140
- package/docs/cloud/editing-prompts.md +0 -79
- package/docs/cloud/env-vars.md +0 -144
- package/docs/cloud/limits.md +0 -81
- package/docs/cloud/logs.md +0 -104
- package/docs/cloud/triggering.md +0 -128
- package/docs/concepts/agents.md +0 -112
- package/docs/concepts/designing-agents.md +0 -247
- package/docs/concepts/graph.md +0 -83
- package/docs/concepts/sessions.md +0 -70
- package/docs/concepts/skills.md +0 -86
- package/docs/concepts/state.md +0 -106
- package/docs/concepts/sub-graphs.md +0 -227
- package/docs/custom-workflows.md +0 -358
- package/docs/get-started/deploy.md +0 -75
- package/docs/get-started/install.md +0 -60
- package/docs/get-started/run-locally.md +0 -94
- package/docs/get-started/trigger-and-logs.md +0 -90
- package/docs/get-started/use-from-agents.md +0 -153
- package/docs/get-started/your-first-workflow.md +0 -69
- package/docs/getting-started.md +0 -108
- package/docs/installation.md +0 -127
- package/docs/integrations/github.md +0 -73
- package/docs/integrations/gitlab.md +0 -43
- package/docs/integrations/jira.md +0 -71
- package/docs/integrations/lark.md +0 -41
- package/docs/integrations/linear.md +0 -43
- package/docs/integrations/notion.md +0 -33
- package/docs/integrations/plane.md +0 -46
- package/docs/integrations/sentry.md +0 -42
- package/docs/integrations/slack.md +0 -33
- package/docs/intro.md +0 -86
- package/docs/legacy/test-automation.md +0 -111
- package/docs/packages/agent-workflow.md +0 -88
- package/docs/packages/cli.md +0 -73
- package/docs/packages/core.md +0 -72
- package/docs/packages/mcp-browser.md +0 -110
- package/docs/packages/mcp-cli.md +0 -176
- package/docs/packages/memory.md +0 -223
- package/docs/packages/skills.md +0 -218
- package/docs/packages/ui-memory.md +0 -245
- package/docs/recipes/bug-autofix.md +0 -85
- package/docs/recipes/github-ai-scout.md +0 -61
- package/docs/recipes/index.md +0 -68
- package/docs/recipes/pipeline-supervisor.md +0 -57
- package/docs/recipes/sentry-triage.md +0 -93
- package/docs/recipes/test.md +0 -190
- package/docs/reviewing-results.md +0 -114
- package/docs/running-tests.md +0 -134
- package/docs/self-host/backup-restore.md +0 -53
- package/docs/self-host/custom-sidecars.md +0 -136
- package/docs/self-host/index.md +0 -75
- package/docs/self-host/storage.md +0 -50
- package/docs/self-host/troubleshooting.md +0 -48
- package/docs/self-host/upgrade.md +0 -81
- package/docs/skills/browser.md +0 -97
- package/docs/skills/chat-memory.md +0 -122
- package/docs/skills/core-tools.md +0 -80
- package/docs/skills/function-skill.md +0 -93
- package/docs/skills/github.md +0 -91
- package/docs/skills/index.md +0 -46
- package/docs/skills/jira.md +0 -99
- package/docs/skills/lark.md +0 -85
- package/docs/skills/memory.md +0 -92
- package/docs/skills/sentry.md +0 -80
- package/docs/skills/slack.md +0 -89
- package/docs/tests/memory.md +0 -131
- package/docs/triggering-workflows.md +0 -552
- package/docs/workflow-artifact-layout-evaluation.md +0 -119
- package/docs/workflow.md +0 -558
package/docs/apps/deploy.md
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 2
|
|
3
|
-
title: Deploy your first app
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Deploy your first app
|
|
7
|
-
|
|
8
|
-
A complete walk-through — from `zibby app templates` to a running instance behind a stable URL — in under two minutes.
|
|
9
|
-
|
|
10
|
-
## Prerequisites
|
|
11
|
-
|
|
12
|
-
You'll need the CLI installed and authenticated:
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
npm install -g @zibby/cli
|
|
16
|
-
zibby login # OAuth in browser, saves session to ~/.zibby/config.json
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
You also need a project. If you don't have one yet, deploy an agent first or create one in the [Zibby dashboard](https://studio.zibby.dev) — apps are scoped to projects so per-instance EFS volumes can be isolated per team.
|
|
20
|
-
|
|
21
|
-
## Browse the catalog
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
zibby app templates
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
ID Display name Tier Rate Description
|
|
29
|
-
grafana Grafana Light $0.05/hr Dashboards for metrics, logs, traces.
|
|
30
|
-
uptime-kuma Uptime Kuma Light $0.05/hr Self-hosted Pingdom-alt.
|
|
31
|
-
drawio draw.io Light $0.05/hr Client-side diagram editor.
|
|
32
|
-
gastown Gas Town Light $0.05/hr Multi-agent workspace.
|
|
33
|
-
open-webui Open WebUI Heavy $0.25/hr ChatGPT-style UI for Ollama / OpenAI.
|
|
34
|
-
openhands OpenHands Heavy $0.25/hr AI software-engineer agent (V1).
|
|
35
|
-
docmost Docmost Heavy $0.25/hr Wiki + collaboration (multi-service).
|
|
36
|
-
… (20 entries total — see `zibby app templates` for the full list)
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Deploy from the catalog
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
zibby app deploy grafana --project <project-id> --name metrics
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
On success:
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
↑ Provisioning grafana on Fargate…
|
|
49
|
-
ECS service + EFS volume + ALB target group
|
|
50
|
-
agent-ops sidecar starting…
|
|
51
|
-
✔ Deployed (instanceId: a1b2c3d4)
|
|
52
|
-
→ Public URL: https://a1b2c3d4.apps.zibby.dev
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
`--project` is interactive-prompted if omitted (CLI walks you through your project list).
|
|
56
|
-
`--name` controls the **display name** — what shows in `zibby app list` and the dashboard. The subdomain is a separate opaque identifier (the instance ID), stable for the life of the instance.
|
|
57
|
-
|
|
58
|
-
The provisioning steps:
|
|
59
|
-
|
|
60
|
-
1. **Allocate an instance ID** — short hex token used as the subdomain
|
|
61
|
-
2. **Create EFS access point** — per-instance volume, encrypted at rest, AZ-pinned
|
|
62
|
-
3. **Register task definition** — pinned to the catalog entry's image(s) + your resource tier; one container per `services[]` entry for multi-service apps
|
|
63
|
-
4. **Spin up ECS service** — desired count 1, agent-ops sidecar bundled alongside the app container(s)
|
|
64
|
-
5. **Wire the ALB** — listener rule routes `<id>.apps.zibby.dev` to the new target group
|
|
65
|
-
6. **Health-check loop** — the first agent-ops tick fires once the container is up
|
|
66
|
-
|
|
67
|
-
Wall-clock: ~45-90 seconds for catalog deploys. The CLI streams progress and prints the public URL the moment the ALB is responsive.
|
|
68
|
-
|
|
69
|
-
## Verify
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
zibby app status a1b2c3d4
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
● metrics (grafana v10.4.2)
|
|
77
|
-
┌ status running (1/1) ✓
|
|
78
|
-
├ resources 0.5 vCPU · 1 GB RAM ✓
|
|
79
|
-
└ hourly $0.05/hr ✓
|
|
80
|
-
|
|
81
|
-
Public URL: https://a1b2c3d4.apps.zibby.dev
|
|
82
|
-
|
|
83
|
-
Last agent-ops run: 14:00:01 hourly_health_check ok (1.2s)
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Open the URL in a browser — Grafana's login screen renders, you sign in with the default `admin / admin` (and immediately rotate it — or better, follow the next section and put basic auth in front of the whole thing). The data sits on the EFS volume, encrypted and isolated; no other Zibby customer can reach it.
|
|
87
|
-
|
|
88
|
-
## Deploying with auth from day one
|
|
89
|
-
|
|
90
|
-
Most self-hosted dashboards (Grafana, Uptime Kuma, n8n on the free tier) either have weak default credentials or no app-level auth at all. The fix is the **auth proxy** — opt in at deploy time and a Caddy sidecar fronts the ALB:
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
zibby app deploy grafana \
|
|
94
|
-
--project <project-id> \
|
|
95
|
-
--name metrics \
|
|
96
|
-
--auth-type basic \
|
|
97
|
-
--auth-user admin \
|
|
98
|
-
--auth-password 'S0me-long-passphrase!'
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
Verify it sticks:
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
curl -I https://a1b2c3d4.apps.zibby.dev
|
|
105
|
-
# HTTP/2 401 ← unauthenticated request is bounced by Caddy
|
|
106
|
-
|
|
107
|
-
curl -I -u 'admin:S0me-long-passphrase!' https://a1b2c3d4.apps.zibby.dev
|
|
108
|
-
# HTTP/2 302 ← Grafana sees the request and redirects to /login
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
Token-based auth is also supported (for webhook receivers, machine-to-machine access):
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
zibby app deploy gotify --project <id> --name notify --auth-type token
|
|
115
|
-
# Backend auto-generates a 32-char URL-safe token and prints it ONCE.
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
You can also pass `--auth-token <yours>` to use your own value. Full details + the password-rotation flow are in [Auth proxy](./auth).
|
|
119
|
-
|
|
120
|
-
## Deploying anything else (goal-mode)
|
|
121
|
-
|
|
122
|
-
If the app you want isn't in the catalog — or its license forbids us shipping a one-click bundle — use **goal-mode**. You describe the install in plain English, Claude writes a bash script, agent-ops runs and supervises it inside the container until the app is responding on a port.
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
zibby app deploy --goal "Install n8n on port 5678 with sqlite persistence" \
|
|
126
|
-
--project <project-id> \
|
|
127
|
-
--name automations \
|
|
128
|
-
--max-turns 40 \
|
|
129
|
-
--timeout-min 30
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
Output streams the planner's progress + the supervisor's verdicts every ~30s:
|
|
133
|
-
|
|
134
|
-
```
|
|
135
|
-
↑ Goal-mode deploy: "Install n8n on port 5678 with sqlite persistence"
|
|
136
|
-
phase 1: planning install script (Claude write+read tools)…
|
|
137
|
-
phase 2: executing /tmp/install.sh under supervision…
|
|
138
|
-
[30s ] supervisor: continue — npm install in progress
|
|
139
|
-
[60s ] supervisor: continue — npm install complete, starting n8n
|
|
140
|
-
[90s ] auto-short-circuit: process exit 0, port 5678 returns 200
|
|
141
|
-
✔ Deployed (instanceId: f1e2d3c4)
|
|
142
|
-
→ Public URL: https://f1e2d3c4.apps.zibby.dev
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
License terms of whatever you install are yours, not Zibby's — same model as deploying on your own EC2. Full architecture + cost expectations: [Goal-mode deploys](./goal-mode).
|
|
146
|
-
|
|
147
|
-
## Choosing your model
|
|
148
|
-
|
|
149
|
-
Goal-mode deploys (and the cheatsheet-mode catalog entries that have a planner step) call Claude inside the container. You can pick which model:
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
zibby app deploy --goal "..." --model claude-sonnet-4-6
|
|
153
|
-
zibby app deploy --goal "..." --model claude-opus-4-8 # heavier installs
|
|
154
|
-
zibby app deploy --goal "..." --model claude-haiku-4-5-20251001 # cheaper, faster
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Rule of thumb:
|
|
158
|
-
|
|
159
|
-
- **Sonnet** (default) — most installs fit. Good speed/cost balance.
|
|
160
|
-
- **Opus** — bump up for installs that hit lots of intervene loops (heavy native compilation, weird init systems, anything where the first plan tends to be wrong).
|
|
161
|
-
- **Haiku** — fine for installs you've already run once and know are reliable.
|
|
162
|
-
|
|
163
|
-
Token spend per deploy is typically $0.05 - $0.30 on Sonnet. Opus can go to ~$1.00 on a deploy that takes 5 intervene iterations.
|
|
164
|
-
|
|
165
|
-
## Watch logs while it warms up
|
|
166
|
-
|
|
167
|
-
If the app behaves oddly on first launch, tail logs:
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
zibby app logs a1b2c3d4 -t
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Logs cover both the app container **and** the agent-ops sidecar. Container logs are color-coded by source:
|
|
174
|
-
|
|
175
|
-
```
|
|
176
|
-
14:00:00.122 [grafana] Listening on port 3000
|
|
177
|
-
14:00:01.044 [agent-ops] hourly_health_check: HTTP 200 in 1.2s
|
|
178
|
-
14:00:01.061 [agent-ops] ✓ instance healthy — next tick in 60m
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
For multi-service apps (e.g. docmost), scope to one container with `--service`:
|
|
182
|
-
|
|
183
|
-
```bash
|
|
184
|
-
zibby app logs <id> -t --service db # just the postgres container
|
|
185
|
-
zibby app logs <id> -t --service web # just the docmost web container
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
`Ctrl+C` exits tail mode; logs persist in CloudWatch with 30-day retention.
|
|
189
|
-
|
|
190
|
-
## What's actually private vs shared
|
|
191
|
-
|
|
192
|
-
Mental model that lines up with what the bill shows:
|
|
193
|
-
|
|
194
|
-
| Resource | Per-instance? |
|
|
195
|
-
|---|---|
|
|
196
|
-
| Subdomain (`<id>.apps.zibby.dev`) | Yours |
|
|
197
|
-
| EFS volume | Yours, encrypted |
|
|
198
|
-
| ALB target group | Yours |
|
|
199
|
-
| ECS task definition | Yours (revisions tracked) |
|
|
200
|
-
| Fargate task | Yours |
|
|
201
|
-
| ALB itself | Shared — pooled across all tenants |
|
|
202
|
-
| ECS cluster | Shared |
|
|
203
|
-
| EFS file system | Shared, but per-instance access points enforce isolation |
|
|
204
|
-
|
|
205
|
-
The shared bits are why per-minute pricing can be $0.05/hr instead of $30/mo — economies of scale on the platform side.
|
|
206
|
-
|
|
207
|
-
→ Next: [Manage instances](./managing)
|
package/docs/apps/goal-mode.md
DELETED
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 6
|
|
3
|
-
title: Goal-mode deploys
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Goal-mode deploys
|
|
7
|
-
|
|
8
|
-
**Describe what you want. Get a deployment.**
|
|
9
|
-
|
|
10
|
-
Goal-mode is `zibby app deploy --goal "..."` — a free-form natural-language install path for any app not in the catalog. Claude writes the bash, agent-ops runs and supervises it inside the container, and you get back a stable HTTPS URL pointing at a running app, encrypted EFS volume and all.
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
zibby app deploy --goal "Install n8n on port 5678 with sqlite persistence" \
|
|
14
|
-
--project <project-id> \
|
|
15
|
-
--name automations
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
That's it. ~5 minutes wall-clock on a healthy run, $0.05-$0.30 in Claude tokens, and you have n8n.
|
|
19
|
-
|
|
20
|
-
## When goal-mode works well
|
|
21
|
-
|
|
22
|
-
- The install fits in **30 min wall-clock and 8 GB RAM**. (Most things: anything pip / npm / cargo / apt / single Docker run. Not things that need to compile LLVM from source.)
|
|
23
|
-
- The app exposes a **single HTTP port** for verification. (Multi-port apps work — agent-ops just verifies the main one.)
|
|
24
|
-
- You're OK with the app running on a fresh ephemeral EFS volume. (No "restore from my existing database" — start the customer's data flow yourself, post-deploy.)
|
|
25
|
-
- The upstream has a **documented install path**. Random unmaintained GitHub repos with no README work less well than mainstream projects.
|
|
26
|
-
|
|
27
|
-
If your install needs more than that — long compile steps, custom kernel modules, a 50 GB pre-trained model download — bring your own host. Goal-mode isn't trying to replace EC2.
|
|
28
|
-
|
|
29
|
-
## How it works
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
zibby app deploy --goal "Install n8n on port 5678 ..."
|
|
33
|
-
│
|
|
34
|
-
▼
|
|
35
|
-
backend POST /apps:
|
|
36
|
-
- extracts verify port from "on port NNNN" (sniffs goal text)
|
|
37
|
-
- splices AGENT_OPS_BOOTSTRAP_MODE=agent_script
|
|
38
|
-
- splices BOOTSTRAP_PROMPT=<your goal text>
|
|
39
|
-
- splices customer's BYOK Claude token (env or --anthropic-token)
|
|
40
|
-
- splices model / max-turns / timeout / token-budget flags
|
|
41
|
-
- splices AGENT_OPS_BOOTSTRAP_SYSTEM_RULES (curated house rules)
|
|
42
|
-
- defaults to 4 vCPU / 8 GB Fargate (heavier than the catalog tiers,
|
|
43
|
-
because installs are CPU-spiky)
|
|
44
|
-
│
|
|
45
|
-
▼
|
|
46
|
-
container starts. agent-ops runs the agent_script loop:
|
|
47
|
-
|
|
48
|
-
┌── Phase 1: PLAN ─────────────────────────────────────────────┐
|
|
49
|
-
│ Claude with Write+Read tools only — no Bash, no Edit. │
|
|
50
|
-
│ Reads your goal + house rules. Writes one complete bash │
|
|
51
|
-
│ script to /tmp/install.sh. ~2 turns, ~$0.05. │
|
|
52
|
-
└──────────────────────────────────────────────────────────────┘
|
|
53
|
-
│
|
|
54
|
-
▼
|
|
55
|
-
┌── Phase 2: SUPERVISE LOOP ───────────────────────────────────┐
|
|
56
|
-
│ agent-ops execs /bin/bash /tmp/install.sh in a process group │
|
|
57
|
-
│ (so we can kill the whole tree on intervene). │
|
|
58
|
-
│ │
|
|
59
|
-
│ Every 30s: │
|
|
60
|
-
│ - snapshot stdout/stderr tail + proc status + idle time │
|
|
61
|
-
│ - send to Claude (text-only, no tools) │
|
|
62
|
-
│ - Claude returns one JSON line: │
|
|
63
|
-
│ {"verdict":"continue","note":"..."} │
|
|
64
|
-
│ {"verdict":"done","note":"app responding on :5678"} │
|
|
65
|
-
│ {"verdict":"intervene","reason":"...","note":"..."} │
|
|
66
|
-
│ │
|
|
67
|
-
│ continue: log progress, keep polling │
|
|
68
|
-
│ done: write success, leave the nohup'd app running │
|
|
69
|
-
│ intervene: SIGTERM the pgroup, 5s grace, SIGKILL, replan │
|
|
70
|
-
│ │
|
|
71
|
-
│ Auto-short-circuit: if proc EXITED with code 0 AND verify │
|
|
72
|
-
│ port returns 2xx-499, agent-ops declares done without │
|
|
73
|
-
│ asking the supervisor. Stops false-positive intervenes when │
|
|
74
|
-
│ the app went into the background and Claude can't see its │
|
|
75
|
-
│ "startup logs" in the snapshot anymore. │
|
|
76
|
-
└──────────────────────────────────────────────────────────────┘
|
|
77
|
-
│
|
|
78
|
-
intervene? ───→ back to Phase 1, with stderr +
|
|
79
|
-
stdout + exit code as new context.
|
|
80
|
-
Claude REWRITES the script (not patches).
|
|
81
|
-
Phase 2 starts fresh.
|
|
82
|
-
│
|
|
83
|
-
▼
|
|
84
|
-
Hard caps (whichever hits first):
|
|
85
|
-
- 5 iterations
|
|
86
|
-
- 30 min wall-clock (configurable via --timeout-min)
|
|
87
|
-
- $1.00 token budget
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Every iteration's script + supervisor turns + final status are persisted under `/var/lib/agent-ops/agent_script-state/` on the per-instance EFS volume. `zibby app logs <id>` surfaces the supervisor verdicts in real time; the persisted state is there for post-mortems.
|
|
91
|
-
|
|
92
|
-
## CLI flags
|
|
93
|
-
|
|
94
|
-
The flags that matter for goal-mode:
|
|
95
|
-
|
|
96
|
-
| Flag | What |
|
|
97
|
-
|---|---|
|
|
98
|
-
| `--goal "<text>"` | Free-form install description. Mutually exclusive with `[appType]`. |
|
|
99
|
-
| `--model <name>` | Claude model — `claude-sonnet-4-6` (default), `claude-opus-4-8` (heavier installs), `claude-haiku-4-5-20251001` (cheaper). |
|
|
100
|
-
| `--max-turns <n>` | Claude subprocess max turns, 1-200 (default 25). Bump for heavy installs (n8n, OpenHands) that need many supervisor checks. |
|
|
101
|
-
| `--timeout-min <n>` | Bootstrap wall-clock minutes, 1-120 (default 30). |
|
|
102
|
-
| `--anthropic-token <token>` | Per-deploy Claude credential override. An Anthropic API key (`sk-ant-api03-…`). Also accepts `ZIBBY_ANTHROPIC_TOKEN` env. Falls back to workspace credentials if absent. |
|
|
103
|
-
| `--name <name>` | Display name for `zibby app list` / dashboard. |
|
|
104
|
-
| `--auth-type / --auth-user / --auth-password / --auth-token` | Optional Caddy auth sidecar in front of the installed app. See [Auth proxy](./auth). |
|
|
105
|
-
|
|
106
|
-
Goal-mode tasks default to **4 vCPU / 8 GB** Fargate — heavier than catalog tiers — because `npm install -g n8n` and friends are CPU/memory spiky. You can still pass `--cpu` / `--memory` to override.
|
|
107
|
-
|
|
108
|
-
## Cost expectations
|
|
109
|
-
|
|
110
|
-
Per goal-mode deploy:
|
|
111
|
-
|
|
112
|
-
- **Compute** — 5-15 min of 4 vCPU / 8 GB Fargate at standard Fargate pricing. Single-digit cents per deploy.
|
|
113
|
-
- **Claude tokens** — typically $0.05-$0.30 on Sonnet (the default). Opus-4-8 can hit $1.00 if the install takes 4-5 intervene iterations. Hard-capped at $1.00 by agent-ops — beyond that the deploy fails.
|
|
114
|
-
- **Ongoing** — once the app is running, the deploy is exactly like any catalog app: per-minute Fargate billing at the resource tier you ended up with. No Claude tokens spent after the install converges.
|
|
115
|
-
|
|
116
|
-
Practical: budget $0.20 - $0.50 per goal-mode deploy attempt, including failed ones. Re-runs after a fix are cheaper because the planner gets shorter context.
|
|
117
|
-
|
|
118
|
-
## When it converges, when it loops
|
|
119
|
-
|
|
120
|
-
It converges fast when:
|
|
121
|
-
|
|
122
|
-
- The install is a single package manager call + a config file + a port to listen on.
|
|
123
|
-
- The app's own README has the exact install steps in a copy-pasteable block.
|
|
124
|
-
- You include the port in your goal (`"on port 5678"`) — saves the planner a guess.
|
|
125
|
-
|
|
126
|
-
It loops or fails when:
|
|
127
|
-
|
|
128
|
-
- The install needs interactive prompts and the planner forgets to `apt-get install -y` / `DEBIAN_FRONTEND=noninteractive`.
|
|
129
|
-
- The app needs a sister service (Postgres + Redis + web) and you didn't tell it. Goal-mode does one task; for multi-service, prefer a [catalog multi-service entry](./index#multi-service-entries) or split into multiple deploys.
|
|
130
|
-
- The download is huge (multi-GB models) and times out the 30-min wall-clock. Use `--timeout-min 60` if you know that's coming.
|
|
131
|
-
|
|
132
|
-
If it fails, the supervisor verdicts in the logs tell you exactly what went wrong on each iteration — paste the goal + the failure output back into the next `--goal "..."` with a hint and it usually converges.
|
|
133
|
-
|
|
134
|
-
## License responsibility
|
|
135
|
-
|
|
136
|
-
Goal-mode is intentionally a different licensing posture from the catalog:
|
|
137
|
-
|
|
138
|
-
- **Catalog apps** — Zibby pre-cleared the license. We're confident we can ship that bundle as a paid host.
|
|
139
|
-
- **Goal-mode** — **you** are directing the install. You named the upstream project, you accepted whatever license terms apply, you decided to run it on infrastructure you're paying for. Same model as deploying it on your own EC2 instance — Zibby is the compute provider, not the redistributor.
|
|
140
|
-
|
|
141
|
-
This is why n8n (Sustainable Use License — forbids paid commercial hosting by a third party) isn't in the catalog but **can** be installed via goal-mode: when you direct the install, you're the operator. The SUL is between you and n8n GmbH, not between Zibby and them.
|
|
142
|
-
|
|
143
|
-
If you're unsure whether your install is fine for goal-mode, read the upstream license. If it requires you-as-the-operator to accept terms before running it, you're the one accepting — make sure that's a thing you're allowed to do for your use case.
|
|
144
|
-
|
|
145
|
-
## Worked example: n8n
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
zibby app deploy --goal "Install n8n on port 5678 with sqlite persistence" \
|
|
149
|
-
--project <project-id> \
|
|
150
|
-
--name automations \
|
|
151
|
-
--max-turns 40
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
Streaming output (abbreviated):
|
|
155
|
-
|
|
156
|
-
```
|
|
157
|
-
↑ Goal-mode deploy: "Install n8n on port 5678 with sqlite persistence"
|
|
158
|
-
Fargate task: 4 vCPU / 8 GB
|
|
159
|
-
model: claude-sonnet-4-6, max-turns: 40, timeout: 30 min
|
|
160
|
-
phase 1: planning install script…
|
|
161
|
-
plan turn 1/40: reading house rules
|
|
162
|
-
plan turn 2/40: wrote /tmp/install.sh (47 lines)
|
|
163
|
-
phase 2: executing /tmp/install.sh under supervision…
|
|
164
|
-
[30s ] supervisor: continue — apt-get update in progress
|
|
165
|
-
[60s ] supervisor: continue — installing nodejs 20 from nodesource
|
|
166
|
-
[120s] supervisor: continue — npm install -g n8n (compiling sqlite3)
|
|
167
|
-
[240s] supervisor: continue — n8n starting, binding to :5678
|
|
168
|
-
[270s] auto-short-circuit: process exit 0, port 5678 returns 200
|
|
169
|
-
✔ Deployed (instanceId: f1e2d3c4)
|
|
170
|
-
→ Public URL: https://f1e2d3c4.apps.zibby.dev
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Total: ~4.5 min, 1 iteration, $0.07 in Claude tokens. Open the URL, set up your n8n admin account, you're done.
|
|
174
|
-
|
|
175
|
-
→ Next: [Auth proxy](./auth) (put basic auth in front of the install you just did) or [Agent operator](./agent-ops) (how the supervise loop works in detail)
|
package/docs/apps/index.md
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 1
|
|
3
|
-
title: Apps overview
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Managed Apps
|
|
7
|
-
|
|
8
|
-
Long-lived, per-tenant containers running open-source tools — each behind a stable HTTPS URL, on encrypted EFS, with an **autonomous agent-ops sidecar** that handles health checks, self-healing, and upgrades on its own.
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
zibby app templates # browse the catalog
|
|
12
|
-
zibby app deploy grafana # one-click — ECS service + EFS volume + ALB target group
|
|
13
|
-
zibby app logs <id> -t # tail logs, SSE auto-reconnect
|
|
14
|
-
zibby app status <id> # uptime, cost, version, agent-ops activity
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Two paths to a deployment
|
|
18
|
-
|
|
19
|
-
There are two ways to land a container on the apps fleet, and you pick by **whether the thing you want is in our catalog**:
|
|
20
|
-
|
|
21
|
-
| | **Catalog** | **Goal-mode** |
|
|
22
|
-
|---|---|---|
|
|
23
|
-
| Trigger | `zibby app deploy <slug>` | `zibby app deploy --goal "..."` |
|
|
24
|
-
| Source | Curated bundle (image + EFS layout + defaults) | Free-form natural-language install |
|
|
25
|
-
| Time-to-live | ~45-90 s | 2-15 min (Claude writes + runs the install script) |
|
|
26
|
-
| Licensing | Pre-cleared by Zibby | You direct the install; you accept the upstream license |
|
|
27
|
-
| Best for | Anything in the 22-app catalog | n8n, random GitHub project, anything not in the catalog |
|
|
28
|
-
|
|
29
|
-
Both paths land in the same shape — Fargate task, per-instance EFS volume, ALB target group, agent-ops sidecar — and look identical to every downstream `zibby app logs/status/upgrade` command. The only difference is **who wrote the install recipe**.
|
|
30
|
-
|
|
31
|
-
See [Goal-mode deploys](./goal-mode) for the long form.
|
|
32
|
-
|
|
33
|
-
## Why apps (not agents)
|
|
34
|
-
|
|
35
|
-
Both are pillars of Zibby Cloud. Pick by **how long the thing needs to run**:
|
|
36
|
-
|
|
37
|
-
| | **Agent** | **App** |
|
|
38
|
-
|---|---|---|
|
|
39
|
-
| Lifetime | Per-trigger (seconds to minutes) | Long-lived (24/7 or paused) |
|
|
40
|
-
| Surface | A graph of agent CLI calls | A whole open-source application |
|
|
41
|
-
| Billing | Per execution | Per minute, while running |
|
|
42
|
-
| Persistence | Session JSONL + S3 artifacts | Encrypted-at-rest EFS volume |
|
|
43
|
-
| Best for | "When ticket lands, classify it" | "Host Grafana for the team" |
|
|
44
|
-
|
|
45
|
-
If you find yourself wanting to **run an open-source web app behind a stable URL**, that's an App. If you want **agent-driven business logic that fires on events**, that's an [Agent](../recipes/).
|
|
46
|
-
|
|
47
|
-
## What you get with every app
|
|
48
|
-
|
|
49
|
-
- **Private subdomain** — `<instance-id>.apps.zibby.dev`, TLS by default
|
|
50
|
-
- **Dedicated EFS volume** — encrypted-at-rest, persists across container restarts and upgrades
|
|
51
|
-
- **Per-instance ALB target group** — your traffic doesn't share a load balancer with other tenants
|
|
52
|
-
- **Per-minute Fargate billing** — including the agent-ops sidecar, pause-to-stop billing
|
|
53
|
-
- **agent-ops sidecar** (see [Agent operator](./agent-ops)) — hourly health checks, self-healing, upgrades
|
|
54
|
-
- **SSE log streaming** — `zibby app logs -t` tails any container from anywhere
|
|
55
|
-
- **Optional auth proxy** — `--auth-type basic|token` puts a Caddy sidecar in front of the app (see [Auth proxy](./auth))
|
|
56
|
-
- **Dedicated egress IP addon** — pin outbound HTTPS through one whitelistable IP for self-hosted GitLab / Salesforce / Oracle Cloud
|
|
57
|
-
|
|
58
|
-
## The catalog
|
|
59
|
-
|
|
60
|
-
Each catalog entry is a curated bundle: container image, EFS volume layout, ALB wiring, secrets pattern, resource defaults. Today's catalog is **22 apps**. Run `zibby app templates` for the canonical, always-up-to-date list with live tier + hourly rate — the sample below is a snapshot, grouped by what each app is for.
|
|
61
|
-
|
|
62
|
-
### AI
|
|
63
|
-
|
|
64
|
-
| App | What it does |
|
|
65
|
-
|---|---|
|
|
66
|
-
| **Open WebUI** | ChatGPT-style UI for Ollama / OpenAI-compatible endpoints |
|
|
67
|
-
| **OpenHands** | AI software-engineer agent — drives the repo end-to-end, GitHub PR workflows |
|
|
68
|
-
| **Gas Town** | Multi-agent workspace — coordinate Claude, Codex, Cursor, Gemini |
|
|
69
|
-
| **Open Design** | Local-first design-artifact generator via your installed coding-agent CLIs |
|
|
70
|
-
| **Plane** | Self-hosted Jira / Linear alternative — issues, cycles, modules, pages |
|
|
71
|
-
|
|
72
|
-
### Automation
|
|
73
|
-
|
|
74
|
-
| App | What it does |
|
|
75
|
-
|---|---|
|
|
76
|
-
| **Activepieces** | Open-source Zapier alternative — visual automation, 400+ MCP servers |
|
|
77
|
-
| **ChangeDetection.io** | Watch any web page for changes — notifies on diff |
|
|
78
|
-
| **Gotify** | Self-hosted push-notification + webhook server |
|
|
79
|
-
|
|
80
|
-
### Data + APIs
|
|
81
|
-
|
|
82
|
-
| App | What it does |
|
|
83
|
-
|---|---|
|
|
84
|
-
| **PostgREST** | Serverless REST API on top of any Postgres schema |
|
|
85
|
-
| **Mathesar** | Spreadsheet-style web UI for Postgres |
|
|
86
|
-
| **PocketBase** | Single-file backend — SQLite + REST + realtime + auth + admin UI |
|
|
87
|
-
|
|
88
|
-
### Productivity + docs
|
|
89
|
-
|
|
90
|
-
| App | What it does |
|
|
91
|
-
|---|---|
|
|
92
|
-
| **Docmost** | Real-time collaborative wiki (multi-service: web + Postgres + Redis) |
|
|
93
|
-
| **SiYuan** | Privacy-first, block-based note-taking / PKM, local-first |
|
|
94
|
-
| **draw.io** | Client-side diagram editor (flowcharts, UML, ER, network) |
|
|
95
|
-
| **Glance** | Self-hosted homepage / dashboard with a feed of RSS, GitHub, monitors |
|
|
96
|
-
| **Homepage** | Self-hosted dashboard with service integrations + bookmarks |
|
|
97
|
-
|
|
98
|
-
### Observability
|
|
99
|
-
|
|
100
|
-
| App | What it does |
|
|
101
|
-
|---|---|
|
|
102
|
-
| **Grafana** | Dashboards for metrics, logs, traces |
|
|
103
|
-
| **OpenObserve** | Petabyte-scale logs + metrics + traces in one binary |
|
|
104
|
-
| **Uptime Kuma** | Self-hosted uptime monitor + status page |
|
|
105
|
-
| **Beszel** | Lightweight server monitor with historical charts |
|
|
106
|
-
|
|
107
|
-
### Identity
|
|
108
|
-
|
|
109
|
-
| App | What it does |
|
|
110
|
-
|---|---|
|
|
111
|
-
| **Authentik** | Self-hosted SSO / IdP (OAuth/SAML/LDAP) |
|
|
112
|
-
| **ZITADEL** | Cloud-native identity + access management (OAuth2/OIDC/SAML/LDAP) |
|
|
113
|
-
|
|
114
|
-
`zibby app templates` is the canonical, always-up-to-date list — the tables above are a snapshot, and the live command is the source of truth for each app's tier and hourly rate.
|
|
115
|
-
|
|
116
|
-
### Multi-service entries
|
|
117
|
-
|
|
118
|
-
A catalog entry can declare more than one container in the same task — useful for apps that need a DB + cache alongside the web tier. **Docmost** is the live example: web + `postgres:16-alpine` + `redis:7-alpine` sharing localhost and per-volume EFS access points. You don't have to think about it — `zibby app deploy docmost` reads identically — but `zibby app logs --service db` lets you scope log tails to one container.
|
|
119
|
-
|
|
120
|
-
### Not in the catalog? Use goal-mode
|
|
121
|
-
|
|
122
|
-
The catalog only includes apps whose licenses permit Zibby (a paid host) to ship them as a one-click bundle. Apps under the Sustainable Use License — most famously **n8n** — aren't in the catalog because the SUL forbids paid commercial hosting. They can still be deployed via goal-mode:
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
zibby app deploy --goal "Install n8n on port 5678 with sqlite persistence"
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
The customer (you) is directing the install — Zibby just provides compute. License terms of whatever you install are between you and the upstream project. See [Goal-mode deploys](./goal-mode).
|
|
129
|
-
|
|
130
|
-
## How tiers work
|
|
131
|
-
|
|
132
|
-
The catalog groups apps into three resource tiers:
|
|
133
|
-
|
|
134
|
-
| Tier | CPU | RAM | Rate |
|
|
135
|
-
|---|---|---|---|
|
|
136
|
-
| **Light** | 0.5 vCPU | 1 GB | $0.05/hr |
|
|
137
|
-
| **Standard** | 1 vCPU | 2 GB | $0.10/hr |
|
|
138
|
-
| **Heavy** | 2 vCPU | 4 GB | $0.25/hr |
|
|
139
|
-
|
|
140
|
-
Per-instance resource overrides are supported when you need to bump CPU / memory for one specific deployment without forking the catalog entry. See [Managing instances → resource overrides](./managing#resource-overrides). Goal-mode deploys default to 4 vCPU / 8 GB to give the install agent enough headroom.
|
|
141
|
-
|
|
142
|
-
## Pricing model
|
|
143
|
-
|
|
144
|
-
- **Per-minute Fargate billing** while the instance is running, scoped to the tier above
|
|
145
|
-
- **No flat platform fee** for apps — you pay only for what's running
|
|
146
|
-
- **Pause to stop the meter** — `zibby app destroy` immediately stops billing; redeploy when you need it back (data is gone after destroy; pause-without-destroy is on the roadmap)
|
|
147
|
-
- **Free tier**: $10 in credits on signup, enough to run a Light app for ~8 days
|
|
148
|
-
|
|
149
|
-
→ Next: [Deploy your first app](./deploy)
|
package/docs/apps/managing.md
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 3
|
|
3
|
-
title: Manage instances
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Operating instances
|
|
7
|
-
|
|
8
|
-
Every lifecycle action — restart, scale, upgrade, rotate credentials, tear down — is one CLI call. All operations are scoped by **instance ID** (`a1b2c3d4`-style); `zibby app list` shows the ID alongside the display name.
|
|
9
|
-
|
|
10
|
-
## Inventory
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
zibby app list # all instances under your account
|
|
14
|
-
zibby app list --project <project-id> # scope to one project
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
ID Name App Tier Status Hourly Uptime
|
|
19
|
-
a1b2c3d4 wiki docmost Heavy running $0.25/hr 7d 14h
|
|
20
|
-
a8f7e6d5 metrics grafana Light running $0.05/hr 21d 3h
|
|
21
|
-
b2c3d4e5 webui open-webui Heavy paused — —
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
`paused` instances are not billed; `running` are. `status` is updated every 60s by the agent-ops sidecar.
|
|
25
|
-
|
|
26
|
-
## Single-instance status
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
zibby app status a1b2c3d4
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
A one-screen summary: status, resources, hourly rate, public URL, last agent-ops run.
|
|
33
|
-
|
|
34
|
-
## Logs
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
zibby app logs a1b2c3d4 # last 200 lines, both containers
|
|
38
|
-
zibby app logs a1b2c3d4 -t # tail mode, polls every 3s
|
|
39
|
-
zibby app logs a1b2c3d4 --lines 1000 # bigger window
|
|
40
|
-
zibby app logs a1b2c3d4 --json # raw JSON lines
|
|
41
|
-
zibby app logs a1b2c3d4 --verbose # full body, no parsing
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Logs include both the **app** container and the **agent-ops** sidecar, prefixed by source. Tail mode reconnects automatically on network blips.
|
|
45
|
-
|
|
46
|
-
## Upgrade (zero-downtime)
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
zibby app upgrade a1b2c3d4
|
|
50
|
-
zibby app upgrade a1b2c3d4 --version 0.1.16 # pin a specific agent-ops version
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Behind the scenes:
|
|
54
|
-
|
|
55
|
-
1. Register a new task definition revision (same image, same volume, same env)
|
|
56
|
-
2. Update the ECS service with the new revision
|
|
57
|
-
3. ALB drains old tasks while new ones come up; the listener serves the new tasks once they pass health checks
|
|
58
|
-
4. Old tasks shut down
|
|
59
|
-
|
|
60
|
-
A load-bearing Grafana stays serving traffic the whole time. `--yes` skips the confirmation prompt for automation.
|
|
61
|
-
|
|
62
|
-
## Restart
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
zibby app restart a1b2c3d4
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Forces the ECS service to roll the current tasks — useful when an app gets wedged on a stuck connection and you don't want a full upgrade.
|
|
69
|
-
|
|
70
|
-
## Rotate credentials
|
|
71
|
-
|
|
72
|
-
For BYOK apps (e.g. open-webui pointing at Anthropic via your own key):
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
zibby app update-credential a1b2c3d4
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
This picks up whatever's currently in your workspace credentials (set via [Settings → Workspace credentials](https://studio.zibby.dev/settings/workspace) or `zibby creds set`) and rolls the task with the new secret env. EFS data is preserved; the task restarts in ~30s.
|
|
79
|
-
|
|
80
|
-
## ENV vars
|
|
81
|
-
|
|
82
|
-
Every app instance has a per-instance encrypted env-var bag, same shape as agent env. Use it for per-instance config (e.g. `N8N_ENCRYPTION_KEY`, `DATABASE_URL` pointing at an external RDS).
|
|
83
|
-
|
|
84
|
-
Set via the dashboard (Apps → instance → ENV tab) or via CLI:
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
zibby app env list a1b2c3d4
|
|
88
|
-
zibby app env set a1b2c3d4 N8N_HOST=automations.acme.com
|
|
89
|
-
zibby app env unset a1b2c3d4 OLD_FLAG
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Changes apply on the next task restart. Use `zibby app restart` to roll immediately.
|
|
93
|
-
|
|
94
|
-
## Resource overrides
|
|
95
|
-
|
|
96
|
-
Default resources come from the catalog entry's tier. To bump CPU / memory for one instance:
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
zibby app deploy grafana --project <id> --cpu 1024 --memory 2048 # 1 vCPU / 2 GB
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
Per-instance overrides survive upgrades; the upgrade flow re-registers the task definition with the same override values unless `--reset-resources` is passed.
|
|
103
|
-
|
|
104
|
-
## Destroy
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
zibby app destroy a1b2c3d4
|
|
108
|
-
zibby app destroy a1b2c3d4 --yes # skip confirmation
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
This:
|
|
112
|
-
|
|
113
|
-
1. Drains the ECS service (in-flight requests finish)
|
|
114
|
-
2. Deletes the service + task definition revision
|
|
115
|
-
3. Removes the ALB listener rule + target group
|
|
116
|
-
4. Releases the EFS access point — **destroys the volume data permanently**
|
|
117
|
-
5. Stops the billing meter immediately
|
|
118
|
-
|
|
119
|
-
There's no soft-delete. If you might want the data later, snapshot it externally first (or wait for the pause-without-destroy feature on the roadmap).
|
|
120
|
-
|
|
121
|
-
→ Next: [Agent operator](./agent-ops)
|