@vibecodr/cli 0.2.11 → 1.0.0
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/CHANGELOG.md +57 -23
- package/MIGRATION.md +73 -0
- package/README.md +89 -72
- package/dist/auth/official-client.d.ts +6 -0
- package/dist/auth/official-client.d.ts.map +1 -0
- package/dist/auth/official-client.js +1 -0
- package/dist/auth/official-client.js.map +1 -0
- package/dist/auth/token-manager.d.ts +40 -0
- package/dist/auth/token-manager.d.ts.map +1 -0
- package/dist/auth/token-manager.js +1 -2
- package/dist/auth/token-manager.js.map +1 -0
- package/dist/bin/vc-tools.d.ts +3 -0
- package/dist/bin/vc-tools.d.ts.map +1 -0
- package/dist/bin/vc-tools.js +7 -0
- package/dist/bin/vc-tools.js.map +1 -0
- package/dist/bin/vibecodr-mcp.d.ts +3 -0
- package/dist/bin/vibecodr-mcp.d.ts.map +1 -0
- package/dist/bin/vibecodr-mcp.js +37 -0
- package/dist/bin/vibecodr-mcp.js.map +1 -0
- package/dist/cli/errors.d.ts +28 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +1 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/output.d.ts +16 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +1 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/parse.d.ts +18 -0
- package/dist/cli/parse.d.ts.map +1 -0
- package/dist/cli/parse.js +1 -0
- package/dist/cli/parse.js.map +1 -0
- package/dist/clients/base.d.ts +20 -0
- package/dist/clients/base.d.ts.map +1 -0
- package/dist/clients/base.js +1 -0
- package/dist/clients/base.js.map +1 -0
- package/dist/clients/claude-code.d.ts +5 -0
- package/dist/clients/claude-code.d.ts.map +1 -0
- package/dist/clients/claude-code.js +88 -0
- package/dist/clients/claude-code.js.map +1 -0
- package/dist/clients/claude-desktop.d.ts +5 -0
- package/dist/clients/claude-desktop.d.ts.map +1 -0
- package/dist/clients/claude-desktop.js +97 -0
- package/dist/clients/claude-desktop.js.map +1 -0
- package/dist/clients/codex.d.ts +5 -0
- package/dist/clients/codex.d.ts.map +1 -0
- package/dist/clients/codex.js +1 -0
- package/dist/clients/codex.js.map +1 -0
- package/dist/clients/cursor.d.ts +5 -0
- package/dist/clients/cursor.d.ts.map +1 -0
- package/dist/clients/cursor.js +1 -1
- package/dist/clients/cursor.js.map +1 -0
- package/dist/clients/vscode.d.ts +5 -0
- package/dist/clients/vscode.d.ts.map +1 -0
- package/dist/clients/vscode.js +5 -1
- package/dist/clients/vscode.js.map +1 -0
- package/dist/clients/windsurf.d.ts +5 -0
- package/dist/clients/windsurf.d.ts.map +1 -0
- package/dist/clients/windsurf.js +1 -0
- package/dist/clients/windsurf.js.map +1 -0
- package/dist/commands/call.d.ts +9 -0
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +1 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +1 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/context.d.ts +15 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +2 -5
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +2 -1
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/help.d.ts +3 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +1 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/install.d.ts +3 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +23 -5
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/login.d.ts +3 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +1 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +3 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +1 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/pulse-publish.d.ts +3 -0
- package/dist/commands/pulse-publish.d.ts.map +1 -0
- package/dist/commands/pulse-publish.js +1 -0
- package/dist/commands/pulse-publish.js.map +1 -0
- package/dist/commands/pulse-setup.d.ts +3 -0
- package/dist/commands/pulse-setup.d.ts.map +1 -0
- package/dist/commands/pulse-setup.js +5 -3
- package/dist/commands/pulse-setup.js.map +1 -0
- package/dist/commands/pulse.d.ts +3 -0
- package/dist/commands/pulse.d.ts.map +1 -0
- package/dist/commands/pulse.js +1 -0
- package/dist/commands/pulse.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +1 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/tools.d.ts +3 -0
- package/dist/commands/tools.d.ts.map +1 -0
- package/dist/commands/tools.js +1 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/uninstall.d.ts +3 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +12 -4
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/upload.d.ts +3 -0
- package/dist/commands/upload.d.ts.map +1 -0
- package/dist/commands/upload.js +1 -0
- package/dist/commands/upload.js.map +1 -0
- package/dist/commands/whoami.d.ts +3 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +82 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/core/interactive-input.d.ts +7 -0
- package/dist/core/interactive-input.d.ts.map +1 -0
- package/dist/core/interactive-input.js +1 -0
- package/dist/core/interactive-input.js.map +1 -0
- package/dist/core/mcp-client.d.ts +17 -0
- package/dist/core/mcp-client.d.ts.map +1 -0
- package/dist/core/mcp-client.js +1 -0
- package/dist/core/mcp-client.js.map +1 -0
- package/dist/core/redaction.d.ts +2 -0
- package/dist/core/redaction.d.ts.map +1 -0
- package/dist/core/redaction.js +36 -2
- package/dist/core/redaction.js.map +1 -0
- package/dist/core/renderers.d.ts +8 -0
- package/dist/core/renderers.d.ts.map +1 -0
- package/dist/core/renderers.js +1 -0
- package/dist/core/renderers.js.map +1 -0
- package/dist/doctor/run.d.ts +10 -0
- package/dist/doctor/run.d.ts.map +1 -0
- package/dist/doctor/run.js +12 -3
- package/dist/doctor/run.js.map +1 -0
- package/dist/legacy/cli/errors.d.ts +9 -0
- package/dist/legacy/cli/errors.d.ts.map +1 -0
- package/dist/legacy/cli/errors.js +23 -0
- package/dist/legacy/cli/errors.js.map +1 -0
- package/dist/legacy/cli/install.d.ts +24 -0
- package/dist/legacy/cli/install.d.ts.map +1 -0
- package/dist/legacy/cli/install.js +307 -0
- package/dist/legacy/cli/install.js.map +1 -0
- package/dist/legacy/cli/output.d.ts +17 -0
- package/dist/legacy/cli/output.d.ts.map +1 -0
- package/dist/legacy/cli/output.js +36 -0
- package/dist/legacy/cli/output.js.map +1 -0
- package/dist/legacy/cli/parser.d.ts +33 -0
- package/dist/legacy/cli/parser.d.ts.map +1 -0
- package/dist/legacy/cli/parser.js +177 -0
- package/dist/legacy/cli/parser.js.map +1 -0
- package/dist/legacy/cli/run.d.ts +11 -0
- package/dist/legacy/cli/run.d.ts.map +1 -0
- package/dist/legacy/cli/run.js +2947 -0
- package/dist/legacy/cli/run.js.map +1 -0
- package/dist/legacy/config/credential-store.d.ts +8 -0
- package/dist/legacy/config/credential-store.d.ts.map +1 -0
- package/dist/legacy/config/credential-store.js +52 -0
- package/dist/legacy/config/credential-store.js.map +1 -0
- package/dist/legacy/config/store.d.ts +63 -0
- package/dist/legacy/config/store.d.ts.map +1 -0
- package/dist/legacy/config/store.js +311 -0
- package/dist/legacy/config/store.js.map +1 -0
- package/dist/legacy/core/api-client.d.ts +45 -0
- package/dist/legacy/core/api-client.d.ts.map +1 -0
- package/dist/legacy/core/api-client.js +204 -0
- package/dist/legacy/core/api-client.js.map +1 -0
- package/dist/legacy/core/contracts.d.ts +488 -0
- package/dist/legacy/core/contracts.d.ts.map +1 -0
- package/dist/legacy/core/contracts.js +386 -0
- package/dist/legacy/core/contracts.js.map +1 -0
- package/dist/legacy/core/goal-coverage.d.ts +15 -0
- package/dist/legacy/core/goal-coverage.d.ts.map +1 -0
- package/dist/legacy/core/goal-coverage.js +169 -0
- package/dist/legacy/core/goal-coverage.js.map +1 -0
- package/dist/legacy/core/redaction.d.ts +4 -0
- package/dist/legacy/core/redaction.d.ts.map +1 -0
- package/dist/legacy/core/redaction.js +121 -0
- package/dist/legacy/core/redaction.js.map +1 -0
- package/dist/legacy/core/validators.d.ts +8 -0
- package/dist/legacy/core/validators.d.ts.map +1 -0
- package/dist/legacy/core/validators.js +102 -0
- package/dist/legacy/core/validators.js.map +1 -0
- package/dist/legacy/core/version.d.ts +3 -0
- package/dist/legacy/core/version.d.ts.map +1 -0
- package/dist/legacy/core/version.js +3 -0
- package/dist/legacy/core/version.js.map +1 -0
- package/dist/legacy/index.d.ts +8 -0
- package/dist/legacy/index.d.ts.map +1 -0
- package/dist/legacy/index.js +8 -0
- package/dist/legacy/index.js.map +1 -0
- package/dist/platform/browser.d.ts +7 -0
- package/dist/platform/browser.d.ts.map +1 -0
- package/dist/platform/browser.js +1 -0
- package/dist/platform/browser.js.map +1 -0
- package/dist/platform/exec.d.ts +3 -0
- package/dist/platform/exec.d.ts.map +1 -0
- package/dist/platform/exec.js +10 -1
- package/dist/platform/exec.js.map +1 -0
- package/dist/platform/paths.d.ts +9 -0
- package/dist/platform/paths.d.ts.map +1 -0
- package/dist/platform/paths.js +13 -0
- package/dist/platform/paths.js.map +1 -0
- package/dist/platform/prompt.d.ts +5 -0
- package/dist/platform/prompt.d.ts.map +1 -0
- package/dist/platform/prompt.js +1 -0
- package/dist/platform/prompt.js.map +1 -0
- package/dist/storage/config-store.d.ts +15 -0
- package/dist/storage/config-store.d.ts.map +1 -0
- package/dist/storage/config-store.js +1 -0
- package/dist/storage/config-store.js.map +1 -0
- package/dist/storage/file-lock.d.ts +7 -0
- package/dist/storage/file-lock.d.ts.map +1 -0
- package/dist/storage/file-lock.js +1 -0
- package/dist/storage/file-lock.js.map +1 -0
- package/dist/storage/install-manifest.d.ts +12 -0
- package/dist/storage/install-manifest.d.ts.map +1 -0
- package/dist/storage/install-manifest.js +1 -0
- package/dist/storage/install-manifest.js.map +1 -0
- package/dist/storage/secret-store.d.ts +36 -0
- package/dist/storage/secret-store.d.ts.map +1 -0
- package/dist/storage/secret-store.js +1 -0
- package/dist/storage/secret-store.js.map +1 -0
- package/dist/types/auth.d.ts +55 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +1 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/config.d.ts +29 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +1 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/install.d.ts +26 -0
- package/dist/types/install.d.ts.map +1 -0
- package/dist/types/install.js +1 -0
- package/dist/types/install.js.map +1 -0
- package/docs/API-CONTRACT.md +606 -0
- package/docs/CLOUDFLARE-PRIMITIVE-FIT.md +212 -0
- package/docs/RELEASE-CHECKLIST.md +297 -0
- package/docs/SECURITY.md +227 -0
- package/docs/VALIDATION-MATRIX.md +58 -0
- package/docs/commands.md +49 -29
- package/docs/legacy/AGENT-TOOLKIT-RFC.md +1395 -0
- package/docs/legacy/CLI-GUIDELINES-AUDIT.md +95 -0
- package/docs/legacy/COMPLETION-AUDIT.md +542 -0
- package/docs/legacy/vc-tools-finetune.md +982 -0
- package/docs/legacy/vc-tools-goal-browser-run-containers.md +465 -0
- package/docs/legacy/vc-tools-goal-original.md +249 -0
- package/package.json +37 -8
|
@@ -0,0 +1,1395 @@
|
|
|
1
|
+
# vc-tools Agent Toolkit RFC
|
|
2
|
+
|
|
3
|
+
Status: draft
|
|
4
|
+
Owner: vc-tools
|
|
5
|
+
Last updated: 2026-05-16
|
|
6
|
+
|
|
7
|
+
This RFC captures the current product and architecture decisions for `vc-tools`
|
|
8
|
+
as a standalone agent toolkit. It is intentionally not a Vibecodr build/remix
|
|
9
|
+
RFC. Vibecodr may use `vc-tools`, and Vibecodr subscriptions may bundle
|
|
10
|
+
`vc-tools`, but the toolkit must make sense for agents doing work outside the
|
|
11
|
+
Vibecodr product surface.
|
|
12
|
+
|
|
13
|
+
This is a planning document for the next compute phase of the existing
|
|
14
|
+
`vc-tools` product, not a redesign from scratch. The live service already has
|
|
15
|
+
Browser, Sandbox/Compute, Jobs, Artifact Shelf, Grants, Usage, CLI/API/MCP,
|
|
16
|
+
quotas, retention, and hosted boundaries. E2B is the intended execution
|
|
17
|
+
provider for Pro Saved Computers and hosted Pro goal-run work. Creator compute
|
|
18
|
+
stays on the existing Cloudflare sandbox path unless Braden explicitly approves
|
|
19
|
+
a separate product change.
|
|
20
|
+
|
|
21
|
+
This document does not claim the live service has already moved to E2B. The
|
|
22
|
+
current production contract remains documented in `docs/API-CONTRACT.md` and
|
|
23
|
+
`docs/CLOUDFLARE-PRIMITIVE-FIT.md` until implementation, migration, and
|
|
24
|
+
production smoke evidence update those files.
|
|
25
|
+
|
|
26
|
+
## Primitives
|
|
27
|
+
|
|
28
|
+
`vc-tools` should be understood as a small set of durable primitives that agents
|
|
29
|
+
can use to get real work done.
|
|
30
|
+
|
|
31
|
+
The governing product test is:
|
|
32
|
+
|
|
33
|
+
> Code should be easier to share, use, and interact with.
|
|
34
|
+
|
|
35
|
+
Every system added to `vc-tools` should be judged by whether it makes that
|
|
36
|
+
sentence more true. If it does, keep going. If it only makes the architecture
|
|
37
|
+
more impressive, cut it, hide it, or defer it.
|
|
38
|
+
|
|
39
|
+
| Primitive | User-facing language | Provider / owner | Purpose |
|
|
40
|
+
| --- | --- | --- | --- |
|
|
41
|
+
| Browser | Agent browser | Cloudflare Browser Run | Let an agent inspect public web targets, render pages, capture screenshots, extract markdown, render PDFs, crawl bounded sites, and produce browser evidence. |
|
|
42
|
+
| Computer | Agent computer | Hosted `vc-tools` control plane; Creator one-shot compute stays on Cloudflare sandbox, while Pro Saved Computers and hosted Pro goal runs use E2B | Give an agent a real isolated Linux computer for commands, files, tests, package installs, tools, previews, and generated outputs. |
|
|
43
|
+
| Jobs | Agent jobs | `vc-tools-api`, D1, Queue, DLQ | Make tool work durable, async, cancellable, retryable, inspectable, and safe to queue under load. |
|
|
44
|
+
| Artifacts | Artifact Shelf / saved work outputs | R2 plus D1 metadata | Store automatic tool-result artifacts plus outputs the user or agent intentionally saves from browser or computer work. |
|
|
45
|
+
| Goals | Goal / work objective | Goal Durable Object plus D1 read model | Group jobs, artifacts, checkpoints, usage, and completion state around one user or agent objective. |
|
|
46
|
+
| Grants | Tool permissions | Vibecodr auth grants scoped to `vc-tools` | Let users and workspaces decide what an agent can do without exposing provider credentials or broad product authority. |
|
|
47
|
+
| Usage | Agent work capacity | Vibecodr subscription entitlement plus `vc-tools` meters | Bundle tool capacity into Vibecodr plans while preserving provider-cost controls, fair use, and hard caps. |
|
|
48
|
+
| API / CLI / MCP | Toolkit surfaces | `@vibecodr/vc-tools`, hosted HTTP API, remote MCP | Let humans, agents, scripts, and MCP clients call the same hosted toolkit through stable interfaces. |
|
|
49
|
+
|
|
50
|
+
The public language should lead with Browser, Computer, Jobs, Artifacts, Grants,
|
|
51
|
+
and Usage. "Sandbox", "E2B", "Cloudflare", "Browser Run", "containers", and
|
|
52
|
+
"provider credits" are implementation or operator terms unless the audience is
|
|
53
|
+
technical and explicitly asking for substrate details.
|
|
54
|
+
|
|
55
|
+
## Decisive Decisions So Far
|
|
56
|
+
|
|
57
|
+
1. `vc-tools` is an agent toolkit. Period.
|
|
58
|
+
|
|
59
|
+
2. `vc-tools` is bundled with Vibecodr subscriptions, but it is not dependent on
|
|
60
|
+
Vibecodr builds, the Vibecodr feed, remix lineage, or the social runtime.
|
|
61
|
+
|
|
62
|
+
3. `vc-tools` is not the existing Vibecodr CLI, not `vibecodr-mcp`, and not
|
|
63
|
+
`@vibecodr/cli`. It is the standalone `@vibecodr/vc-tools` package with the
|
|
64
|
+
`vc-tools` binary.
|
|
65
|
+
|
|
66
|
+
4. The existing Vibecodr CLI should remain the product-specific control plane
|
|
67
|
+
for Vibecodr workflows. `vc-tools` should own agent toolkit workflows:
|
|
68
|
+
browser, computer, jobs, artifacts, grants, usage, diagnostics, and tool
|
|
69
|
+
tests.
|
|
70
|
+
|
|
71
|
+
5. The phrase "attached to every build" is rejected for `vc-tools` positioning
|
|
72
|
+
because it ties the toolkit too tightly to Vibecodr builds. Vibecodr builds
|
|
73
|
+
may become one target type later, but they are not the product center.
|
|
74
|
+
|
|
75
|
+
6. Browser stays on Cloudflare Browser Run because Browser Run is the better
|
|
76
|
+
browser product for `vc-tools`: Quick Actions, Browser Sessions, screenshots,
|
|
77
|
+
PDFs, markdown extraction, crawl, Playwright/Puppeteer/CDP, and browser MCP
|
|
78
|
+
patterns.
|
|
79
|
+
|
|
80
|
+
7. The hosted shell/test execution lane should move from "sandbox" language to
|
|
81
|
+
"agent computer" product language without collapsing every plan onto the
|
|
82
|
+
same provider. Creator one-shot compute remains on the existing Cloudflare
|
|
83
|
+
sandbox path. Pro Saved Computers and hosted Pro goal-run work move toward
|
|
84
|
+
E2B because E2B maps cleanly to a real isolated computer for an agent: Linux
|
|
85
|
+
environment, commands, files, tools, templates, lifecycle, and persistence.
|
|
86
|
+
|
|
87
|
+
This is an expansion of the existing Compute/Sandbox primitive, not a
|
|
88
|
+
replacement for Browser, Jobs, Artifact Shelf, Grants, Usage, or the hosted
|
|
89
|
+
`vc-tools` control plane.
|
|
90
|
+
|
|
91
|
+
8. The agent computer should not be marketed as E2B credits, sandbox minutes,
|
|
92
|
+
container time, or infrastructure resale. Users buy agent work capacity and
|
|
93
|
+
useful toolkit outcomes. Provider seconds remain internal meters.
|
|
94
|
+
|
|
95
|
+
9. The public product should not say "E2B powers this" in core copy. Provider
|
|
96
|
+
language belongs in internal architecture, security/legal/subprocessor, and
|
|
97
|
+
operator documentation. The user-facing primitive is the `vc-tools` Agent
|
|
98
|
+
Computer.
|
|
99
|
+
|
|
100
|
+
10. The primary product object is an agent job, not a Vibecodr build. A job can
|
|
101
|
+
target a URL, command, test suite, repo, uploaded project, generated file
|
|
102
|
+
task, future saved computer, or later a Vibecodr build.
|
|
103
|
+
|
|
104
|
+
11. `vc-tools` is where a user's agent can actually get work done. The core
|
|
105
|
+
promise is not "debug your app"; it is "give your agent tools, a browser, a
|
|
106
|
+
computer, artifacts, and proof."
|
|
107
|
+
|
|
108
|
+
12. Goals are approved only as a continuation-capable coordination primitive. A
|
|
109
|
+
goal groups jobs, artifacts, checkpoints, usage, budget, and completion
|
|
110
|
+
state around an objective. Goals do not replace Browser, Agent Computer,
|
|
111
|
+
Jobs, or Artifact Shelf; they organize work across those primitives.
|
|
112
|
+
|
|
113
|
+
13. A tracking-only `goals.*` protocol is not a finished product phase. It may
|
|
114
|
+
exist as compatibility plumbing, but the first product-grade Goals release
|
|
115
|
+
must include a runner that can keep an agent working until the goal is done,
|
|
116
|
+
paused, blocked, abandoned, or budget-limited.
|
|
117
|
+
|
|
118
|
+
14. Hosted long-running Goals are a Pro-only post-E2B capability. Pro active goal
|
|
119
|
+
runs should not inherit the short one-shot compute cap while meaningful work
|
|
120
|
+
is happening. They are bounded by account limits, plan budget, concurrency,
|
|
121
|
+
provider runtime ceilings, abuse controls, and user/operator stop controls.
|
|
122
|
+
If the provider has a continuous-runtime ceiling, the runner should
|
|
123
|
+
checkpoint, pause/resume, or rotate safely instead of treating wall-clock
|
|
124
|
+
timeout as product completion.
|
|
125
|
+
|
|
126
|
+
15. Browser and computer are separate primitives. The browser is for seeing and
|
|
127
|
+
verifying web surfaces. The computer is for executing and changing things.
|
|
128
|
+
They can cooperate inside one agent job, but neither should swallow the
|
|
129
|
+
other.
|
|
130
|
+
|
|
131
|
+
16. Cloudflare remains the hosted control plane for `vc-tools`: auth admission,
|
|
132
|
+
grants, quota, D1 job and usage state, R2 artifacts, Queue/DLQ, audit,
|
|
133
|
+
Browser Run integration, MCP/API routes, computer identity, saved-computer
|
|
134
|
+
ownership, plan eligibility, expiry policy, and durable platform metadata.
|
|
135
|
+
|
|
136
|
+
17. E2B should be treated as the external execution plane for Pro Agent
|
|
137
|
+
Computers, not as the source of truth for product identity, quota, billing,
|
|
138
|
+
artifacts, grants, ownership, session identity, or retention policy.
|
|
139
|
+
|
|
140
|
+
18. Provider secrets and platform authority stay grant-gated. Agents must not
|
|
141
|
+
receive raw Cloudflare tokens, E2B API keys, E2B sandbox access tokens,
|
|
142
|
+
traffic access tokens, Vibecodr grant-signing secrets, raw Clerk
|
|
143
|
+
credentials, or broad D1/R2 authority.
|
|
144
|
+
|
|
145
|
+
19. The first public vocabulary should be capability/outcome-oriented:
|
|
146
|
+
"browser", "computer", "job", "artifact", "proof", "grant", and "usage".
|
|
147
|
+
The implementation can retain compatibility aliases for existing
|
|
148
|
+
`sandbox.*` capabilities while the product language moves to
|
|
149
|
+
`computer.*`.
|
|
150
|
+
|
|
151
|
+
20. Agent Computers are broad working environments. Do not over-limit what the
|
|
152
|
+
agent can do inside its own computer beyond OS permissions, plan limits,
|
|
153
|
+
quota, network policy, abuse controls, and secret handling. Put stricter
|
|
154
|
+
friction at durable export boundaries instead.
|
|
155
|
+
|
|
156
|
+
21. Pro E2B-backed Agent Computers should have public outbound internet access
|
|
157
|
+
by default in the post-E2B v1 compute lane. Creator Cloudflare sandbox
|
|
158
|
+
compute keeps its current network policy unless changed in a separate
|
|
159
|
+
Creator-specific release. This is distinct from Browser Run: Browser Run
|
|
160
|
+
remains the browser product for agents and humans; public internet inside
|
|
161
|
+
the Agent Computer is for the agent's compute environment.
|
|
162
|
+
|
|
163
|
+
22. Computer persistence is a Pro-only product capability called Saved
|
|
164
|
+
Computers. Free gets no Agent Computer. Creator remains on Cloudflare
|
|
165
|
+
one-shot sandbox compute and should not see a locked Save Computer
|
|
166
|
+
affordance during the task flow.
|
|
167
|
+
|
|
168
|
+
23. A Pro user's default Agent Computer is account-attached unless the user
|
|
169
|
+
explicitly asks for a scratch, project, or otherwise separate computer. Pro
|
|
170
|
+
includes one primary Saved Computer by default. Additional Saved Computers,
|
|
171
|
+
project computers, or scratch computers are separate plan/add-on/future
|
|
172
|
+
packaging decisions and must not blur the primary account-attached device
|
|
173
|
+
promise.
|
|
174
|
+
|
|
175
|
+
24. Pro Saved Computers should auto-pause after 10 minutes of inactivity or
|
|
176
|
+
sandbox timeout instead of being killed. Active Pro goal runs should not
|
|
177
|
+
auto-pause merely because they pass a short wall-clock timeout; they should
|
|
178
|
+
continue while meaningful work is happening and account limits allow it. The
|
|
179
|
+
product expectation is that a user can walk away, the agent can keep working,
|
|
180
|
+
and the computer sleeps only when work goes idle, finishes, stalls, is
|
|
181
|
+
paused, or hits a limit. For Pro Saved Computers, automated cleanup means
|
|
182
|
+
pause, reconcile, repair, or export guidance; it must not mean kill while the
|
|
183
|
+
subscription and safety posture are valid.
|
|
184
|
+
|
|
185
|
+
25. Permanent kill of a Pro Saved Computer is reserved for explicit user delete,
|
|
186
|
+
explicit reset/discard, plan/account lifecycle with clear notice or export
|
|
187
|
+
window, abuse/security/legal action, or unrecoverable provider failure.
|
|
188
|
+
Passive inactivity alone is not a kill reason for an active Pro subscriber.
|
|
189
|
+
|
|
190
|
+
26. Artifact Shelf has two modes: automatic tool-result artifacts and explicit
|
|
191
|
+
user/agent saves. Hosted jobs may automatically store bounded result
|
|
192
|
+
artifacts such as browser outputs, crawl results, command logs, and closure
|
|
193
|
+
metadata. Arbitrary computer files are saved to Shelf only when the user or
|
|
194
|
+
agent explicitly chooses to save them.
|
|
195
|
+
|
|
196
|
+
27. Save to Shelf can happen at any time during an Agent Computer run. The UX
|
|
197
|
+
and DX must make it easy for an agent or user to save a specific file path
|
|
198
|
+
from the computer into the Shelf.
|
|
199
|
+
|
|
200
|
+
28. Every Agent Computer run keeps a lightweight job record and short final
|
|
201
|
+
summary even when no files are saved to the Shelf.
|
|
202
|
+
|
|
203
|
+
29. Agent Computers should not teach or require a `/workspace` concept. The
|
|
204
|
+
product model is the computer itself. Use E2B's native `/home/user` home as
|
|
205
|
+
the default working location, displayed as `~`, with simple conventional
|
|
206
|
+
folders such as `~/project`, `~/outputs`, and `~/notes`.
|
|
207
|
+
|
|
208
|
+
30. Sensitive, hidden, credential-like, cache-heavy, or system-path Shelf
|
|
209
|
+
exports are allowed, but require double confirmation with an explicit
|
|
210
|
+
warning, reason, and audit record. The computer is liberal; durable export is
|
|
211
|
+
deliberate.
|
|
212
|
+
|
|
213
|
+
31. For v1, sensitive/system Shelf export requires human approval unless the
|
|
214
|
+
user has granted a specific sensitive-export permission to that agent,
|
|
215
|
+
project, or workspace.
|
|
216
|
+
|
|
217
|
+
32. Setup must be zero-code for the primary user path. Users should not need to
|
|
218
|
+
write config files, edit MCP JSON, understand templates, paste provider API
|
|
219
|
+
keys, set environment variables, manage sandbox ids, choose base images, or
|
|
220
|
+
install agent runners manually just to give their agent a computer.
|
|
221
|
+
|
|
222
|
+
33. The intended setup path is: install `vc-tools`, log in to Vibecodr, start a
|
|
223
|
+
computer, connect the provider account or subscription the agent will use,
|
|
224
|
+
then set the job or goal. Advanced configuration can exist, but it must be
|
|
225
|
+
inspectable output from the setup flow, not the setup flow itself.
|
|
226
|
+
|
|
227
|
+
34. Provider login should feel like account connection, not infrastructure
|
|
228
|
+
configuration. `vc-tools` should prefer provider-supported OAuth, device
|
|
229
|
+
login, browser login, or guided in-computer login flows over raw API-key
|
|
230
|
+
entry. Any provider credentials or runner session state must stay inside the
|
|
231
|
+
approved secure boundary for that computer/profile and must not become
|
|
232
|
+
visible CLI config by default.
|
|
233
|
+
|
|
234
|
+
35. Agent Computers can emit UI through temporary previews. A preview is an
|
|
235
|
+
owner-scoped view of a service running inside the computer, not publishing,
|
|
236
|
+
deployment, or public sharing.
|
|
237
|
+
|
|
238
|
+
36. Computer Preview is distinct from Browser Run. Computer Preview shows what
|
|
239
|
+
the agent is running inside the computer. Browser Run remains the browser
|
|
240
|
+
product for inspection, screenshots, PDFs, crawl, and browser-native
|
|
241
|
+
verification.
|
|
242
|
+
|
|
243
|
+
37. Public preview links and durable publish/deploy are consequence boundaries.
|
|
244
|
+
Private preview can be normal; public sharing and publishing require
|
|
245
|
+
explicit user intent and policy-controlled grants.
|
|
246
|
+
|
|
247
|
+
38. Cost protection should be hard in the control plane and soft in the normal
|
|
248
|
+
user experience. Normal agent work should not require repeated approvals,
|
|
249
|
+
but every cost-bearing provider action must pass entitlement, quota,
|
|
250
|
+
concurrency, budget, abuse, and operator-state checks before it starts.
|
|
251
|
+
|
|
252
|
+
39. Auto-pause is the primary cost-saving lifecycle behavior for Pro Saved
|
|
253
|
+
Computers. Saved Computers sleep after 10 minutes of inactivity/timeout
|
|
254
|
+
instead of being killed. Auto-resume stays off by default so passive traffic
|
|
255
|
+
cannot wake a computer and spend money without an intentional user or
|
|
256
|
+
authorized agent action through `vc-tools`.
|
|
257
|
+
|
|
258
|
+
40. Active Pro Goal Runs use renewable work leases rather than short wall-clock
|
|
259
|
+
caps. A runner can keep working while it renews meaningful progress within
|
|
260
|
+
account limits; if progress stalls, the goal becomes paused or `needs_human`
|
|
261
|
+
and the computer auto-pauses instead of burning quietly.
|
|
262
|
+
|
|
263
|
+
41. Disposable one-shot computers remain aggressively bounded. Creator
|
|
264
|
+
Cloudflare sandbox jobs stay in this category. They should kill on
|
|
265
|
+
completion, cancellation, failure, or timeout, and they should not persist
|
|
266
|
+
provider state unless the product path explicitly promotes eligible Pro work
|
|
267
|
+
to a Saved Computer or saves specific outputs to Shelf.
|
|
268
|
+
|
|
269
|
+
## Product Canon
|
|
270
|
+
|
|
271
|
+
Internal canon:
|
|
272
|
+
|
|
273
|
+
> `vc-tools` is the hosted toolkit for agents. It gives agents a browser, a
|
|
274
|
+
> computer, durable jobs, artifacts, and scoped permissions. It is bundled with
|
|
275
|
+
> Vibecodr, but it is not dependent on Vibecodr.
|
|
276
|
+
|
|
277
|
+
Public canon:
|
|
278
|
+
|
|
279
|
+
> Give your agent a browser, a computer, and a place to put the work.
|
|
280
|
+
|
|
281
|
+
Computer canon:
|
|
282
|
+
|
|
283
|
+
> You have your computer. Give your agent theirs.
|
|
284
|
+
|
|
285
|
+
Setup canon:
|
|
286
|
+
|
|
287
|
+
> Install. Log in. Start a computer. Sign in to your agent provider. Give it
|
|
288
|
+
> the job.
|
|
289
|
+
|
|
290
|
+
Shorter positioning options:
|
|
291
|
+
|
|
292
|
+
- `vc-tools` is where your agent gets work done.
|
|
293
|
+
- Browser. Computer. Artifacts. Jobs. For agents that need to actually do
|
|
294
|
+
things.
|
|
295
|
+
- Give your agent tools, not just prompts.
|
|
296
|
+
- Included with Vibecodr. Useful wherever your agent works.
|
|
297
|
+
|
|
298
|
+
Avoid as primary `vc-tools` positioning:
|
|
299
|
+
|
|
300
|
+
- Attached to every build.
|
|
301
|
+
- Every build gets an agent computer.
|
|
302
|
+
- Vibecodr's remix engine.
|
|
303
|
+
- E2B credits.
|
|
304
|
+
- Sandbox minutes.
|
|
305
|
+
- Cloudflare container time.
|
|
306
|
+
- A local execution wrapper.
|
|
307
|
+
|
|
308
|
+
## Surface Separation
|
|
309
|
+
|
|
310
|
+
| Surface | Product role | Should own | Should not own |
|
|
311
|
+
| --- | --- | --- | --- |
|
|
312
|
+
| Existing Vibecodr CLI / `@vibecodr/cli` | Vibecodr product control plane | Vibecodr-specific product workflows such as product auth, project/source/publish/runtime commands, and future product-specific diagnosis | Browser Run, E2B computers, general-purpose agent jobs, artifact shelves, or generic agent toolkit commands |
|
|
313
|
+
| `vc-tools` / `@vibecodr/vc-tools` | Agent toolkit control plane | Browser, computer, jobs, artifacts, grants, usage, diagnostics, remote MCP connection metadata, and tool tests | Vibecodr product publishing authority, product runtime internals, or local execution of hosted work |
|
|
314
|
+
| Vibecodr MCP / MCP CLI | Agent-facing Vibecodr product integration | Vibecodr-specific agent actions and product workflows | Owning the generic browser/computer/artifact/job primitives |
|
|
315
|
+
|
|
316
|
+
If the Vibecodr CLI or Vibecodr MCP needs agent toolkit behavior, it should call
|
|
317
|
+
or guide users to `vc-tools` instead of reimplementing those lanes.
|
|
318
|
+
|
|
319
|
+
## Existing Contract To Preserve
|
|
320
|
+
|
|
321
|
+
The E2B work is a compute-layer expansion. It must preserve the existing
|
|
322
|
+
`vc-tools` product contract unless Braden explicitly approves a separate product
|
|
323
|
+
change.
|
|
324
|
+
|
|
325
|
+
- Browser stays on Cloudflare Browser Run.
|
|
326
|
+
- Browser Run serves agents and humans that need browser-native work:
|
|
327
|
+
rendering, screenshots, markdown extraction, PDFs, bounded crawl, and
|
|
328
|
+
longer paid browser tasks.
|
|
329
|
+
- Agent Computer networking is for the agent's compute environment. It does not
|
|
330
|
+
replace Browser Run and should not be sold as the browser product.
|
|
331
|
+
- Jobs remain D1/Queue/DLQ-backed, async, inspectable, cancellable, and
|
|
332
|
+
quota-reserved before cost-bearing provider work.
|
|
333
|
+
- Artifact Shelf remains R2 bytes plus D1 metadata, with ownership, retention,
|
|
334
|
+
quota, deletion, expiry, and storage accounting.
|
|
335
|
+
- Grants remain the permission model for tool capability, network expansion,
|
|
336
|
+
preview/public exposure, sensitive export, and future computer features.
|
|
337
|
+
- Usage remains hosted authority: credits, browser time, computer time,
|
|
338
|
+
artifact storage, active job counts, account-level caps, and operator alerts.
|
|
339
|
+
- CLI/API/MCP remain control-plane surfaces. The CLI must not become a local
|
|
340
|
+
execution wrapper around browser or computer work.
|
|
341
|
+
- Existing `sandbox.*` capabilities remain compatibility surfaces while
|
|
342
|
+
`computer.*` becomes the product language for the next compute phase.
|
|
343
|
+
- Creator one-shot compute is explicitly not part of the E2B provider swap.
|
|
344
|
+
Creator stays on the current Cloudflare sandbox implementation, including its
|
|
345
|
+
current 10-minute bounded compute run shape and no Saved Computer
|
|
346
|
+
persistence.
|
|
347
|
+
- Pro one-shot/scratch compute can remain bounded, but the Pro product center is
|
|
348
|
+
the account-attached E2B Saved Computer. Pro gets a primary Saved Computer by
|
|
349
|
+
default; extra/scratch/project computers are explicit future packaging, not
|
|
350
|
+
the normal device model.
|
|
351
|
+
- Pro hosted goal runs are a separate post-E2B lane. They should not have a
|
|
352
|
+
short wall-clock cap while the agent is actively working; they are limited by
|
|
353
|
+
account entitlement, goal budget, plan concurrency, provider runtime ceilings,
|
|
354
|
+
provider spend controls, abuse controls, and explicit user/operator stop
|
|
355
|
+
actions.
|
|
356
|
+
- Cost protections stay in the hosted control plane. The user should experience
|
|
357
|
+
generous agent work, not provider-budget anxiety, until work approaches a real
|
|
358
|
+
limit or consequence boundary.
|
|
359
|
+
|
|
360
|
+
## Capability Vocabulary
|
|
361
|
+
|
|
362
|
+
The current contract already has shipped `sandbox.*` capabilities. The product
|
|
363
|
+
language should move toward `computer.*` without breaking old clients.
|
|
364
|
+
|
|
365
|
+
Near-term compatibility:
|
|
366
|
+
|
|
367
|
+
| Existing capability | Product alias | User-facing label |
|
|
368
|
+
| --- | --- | --- |
|
|
369
|
+
| `sandbox.run_command` | `computer.run` | Run on agent computer |
|
|
370
|
+
| `sandbox.run_tests` | `computer.test` | Test on agent computer |
|
|
371
|
+
|
|
372
|
+
Future computer capabilities:
|
|
373
|
+
|
|
374
|
+
| Capability | Purpose |
|
|
375
|
+
| --- | --- |
|
|
376
|
+
| `computer.run` | Run one bounded command or script in a clean hosted computer. |
|
|
377
|
+
| `computer.test` | Run a test command and return structured output plus artifacts. |
|
|
378
|
+
| `computer.files` | Read/write/list scoped files in a task computer or saved computer. |
|
|
379
|
+
| `computer.preview.start` | Start or expose a private owner-scoped preview for a service running inside the computer. |
|
|
380
|
+
| `computer.preview.status` | Report preview URL/handle, port, visibility, owner access state, and expiration without leaking provider tokens. |
|
|
381
|
+
| `computer.preview.stop` | Stop or revoke a running computer preview. |
|
|
382
|
+
| `computer.session` | Create or resume a longer-lived computer session when the plan and grant allow it. |
|
|
383
|
+
| `computer.snapshot` | Save or branch a computer state only when the product contract needs it. |
|
|
384
|
+
| `computer.mcp` | Expose a controlled MCP gateway/toolbelt inside a computer. |
|
|
385
|
+
|
|
386
|
+
Future setup-facing capabilities:
|
|
387
|
+
|
|
388
|
+
| Capability | Purpose |
|
|
389
|
+
| --- | --- |
|
|
390
|
+
| `provider.connect` | Start a guided provider login/account-connection flow for an agent runner. |
|
|
391
|
+
| `provider.status` | Show whether a provider is connected for a computer/profile without exposing secrets. |
|
|
392
|
+
| `provider.disconnect` | Remove a provider connection or runner session from a computer/profile. |
|
|
393
|
+
|
|
394
|
+
Future Shelf-facing aliases:
|
|
395
|
+
|
|
396
|
+
| Capability | Purpose |
|
|
397
|
+
| --- | --- |
|
|
398
|
+
| `shelf.save` | Save a specific browser output, uploaded file, or Agent Computer file path into the Artifact Shelf. |
|
|
399
|
+
| `shelf.get` | Read a saved Shelf artifact subject to ownership, grants, and retention. |
|
|
400
|
+
|
|
401
|
+
Future Goal-facing capabilities:
|
|
402
|
+
|
|
403
|
+
| Capability | Purpose |
|
|
404
|
+
| --- | --- |
|
|
405
|
+
| `goals.create` | Create an active goal with objective, optional budget, and optional verification expectation. |
|
|
406
|
+
| `goals.get` | Read the goal status, budget burn, checkpoints, linked jobs, and linked artifacts. |
|
|
407
|
+
| `goals.checkpoint` | Append a user-facing progress checkpoint with label, evidence, job ids, and artifact ids. |
|
|
408
|
+
| `goals.complete` | Mark a goal complete with summary, evidence, and final budget report. |
|
|
409
|
+
|
|
410
|
+
Future usage-facing capabilities:
|
|
411
|
+
|
|
412
|
+
| Capability | Purpose |
|
|
413
|
+
| --- | --- |
|
|
414
|
+
| `usage.status` | Show plan capacity, current usage, active reservations, and approaching limits in user-readable terms. |
|
|
415
|
+
| `usage.limits` | Return machine-readable plan limits for agents without exposing provider cost internals. |
|
|
416
|
+
|
|
417
|
+
The implementation and security docs may continue to say "sandbox" where that
|
|
418
|
+
is the correct isolation term. Public docs, CLI help, and product pages should
|
|
419
|
+
prefer "computer" for the E2B-backed primitive.
|
|
420
|
+
|
|
421
|
+
## Offering Map
|
|
422
|
+
|
|
423
|
+
`vc-tools` should break primitives into offerings that work for technical and
|
|
424
|
+
non-technical developers.
|
|
425
|
+
|
|
426
|
+
| Offering | Non-technical phrasing | Technical phrasing |
|
|
427
|
+
| --- | --- | --- |
|
|
428
|
+
| Quick Check | Check this page and bring back proof. | Browser Run Quick Action with URL validation, quota reservation, R2 artifact, and D1 usage. |
|
|
429
|
+
| Agent Browser | Let the agent inspect a site. | Browser Run Session with bounded instructions, idle closure, artifacts, and audit. |
|
|
430
|
+
| Creator Sandbox | Run a bounded task in the hosted sandbox. | Existing Cloudflare sandbox one-shot compute with current Creator limits and no Saved Computer persistence. |
|
|
431
|
+
| Pro Agent Computer | Let the agent use its own cloud computer. | Account-attached E2B Saved Computer with commands, files, templates, lifecycle, private preview, pause-first persistence, and strict server-side tokens. |
|
|
432
|
+
| Computer Preview | See what the agent is running. | Private owner-scoped preview handle for a service running on a port inside the Agent Computer. |
|
|
433
|
+
| Provider Connection | Sign in to the AI account your agent uses. | Guided provider auth/profile setup with generated runner config, secure token/session handling, and no required hand-written config. |
|
|
434
|
+
| Test Run | Run the tests and show what failed. | Bounded command/test execution with stdout/stderr artifact, exit code, duration, and usage meter. |
|
|
435
|
+
| Save to Shelf | Save this file so it survives the computer. | Explicit artifact write from browser output, uploaded file, or agent computer file path into R2 with D1 metadata. |
|
|
436
|
+
| Durable Job | Start the work and check back. | Queue/DLQ-backed job with D1 status, retry, cancellation, and capacity controls. |
|
|
437
|
+
| Pro Goal Run | Give the agent the job and let it keep working. | Pro-only hosted runner inside an E2B Agent Computer, bounded by account limits and Goal DO state instead of a short wall-clock cap. |
|
|
438
|
+
| Tool Grant | Let the agent do only this kind of work. | Scoped grant claims with `vc-tools:*` or per-tool scopes and plan-derived limits. |
|
|
439
|
+
|
|
440
|
+
## Zero-Code Setup Doctrine
|
|
441
|
+
|
|
442
|
+
The primary setup experience must be product onboarding, not developer
|
|
443
|
+
configuration. The user should not need to know that the computer is an E2B
|
|
444
|
+
sandbox, that a runner needs MCP configuration, or that provider session files
|
|
445
|
+
exist. This doctrine applies to the Pro Agent Computer path. Creator's bounded
|
|
446
|
+
Cloudflare sandbox jobs should remain simple one-shot tool calls and must not
|
|
447
|
+
grow a fake locked-device onboarding flow.
|
|
448
|
+
|
|
449
|
+
Happy path:
|
|
450
|
+
|
|
451
|
+
```text
|
|
452
|
+
install vc-tools
|
|
453
|
+
vc-tools login
|
|
454
|
+
vc-tools computer start
|
|
455
|
+
connect provider
|
|
456
|
+
set goal
|
|
457
|
+
walk away
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
The CLI and dashboard should guide the same flow:
|
|
461
|
+
|
|
462
|
+
- `vc-tools login` authenticates the user through Vibecodr.
|
|
463
|
+
- `vc-tools computer start` creates or resumes an eligible computer and opens a
|
|
464
|
+
guided setup surface when required.
|
|
465
|
+
- The setup flow lets the user choose or connect the agent provider account they
|
|
466
|
+
already pay for.
|
|
467
|
+
- `vc-tools` installs or verifies the runner inside the computer from a managed
|
|
468
|
+
template/profile.
|
|
469
|
+
- `vc-tools` generates any MCP config, runner config, env files, token files, or
|
|
470
|
+
provider session wiring behind the scenes.
|
|
471
|
+
- The user sees connection state, plan limits, last activity, and the next
|
|
472
|
+
action, not raw JSON.
|
|
473
|
+
|
|
474
|
+
Advanced configuration can exist for technical users, but it should be a
|
|
475
|
+
secondary inspect/edit/export surface. The normal path should never require:
|
|
476
|
+
|
|
477
|
+
- hand-written MCP JSON
|
|
478
|
+
- hand-written provider config
|
|
479
|
+
- copying provider API keys into shell commands
|
|
480
|
+
- choosing base images or templates
|
|
481
|
+
- editing `.env` files
|
|
482
|
+
- knowing E2B sandbox ids
|
|
483
|
+
- installing the agent runner manually
|
|
484
|
+
- understanding Cloudflare, E2B, Browser Run, D1, R2, Queues, or Durable Objects
|
|
485
|
+
|
|
486
|
+
Provider connection policy:
|
|
487
|
+
|
|
488
|
+
- Prefer provider-supported OAuth, device login, browser login, or guided
|
|
489
|
+
in-computer login.
|
|
490
|
+
- Treat provider login as an account/profile connection, not a code task.
|
|
491
|
+
- Keep provider credentials and runner session state out of default CLI-visible
|
|
492
|
+
config.
|
|
493
|
+
- Store only status, profile metadata, and revocation handles in Cloudflare
|
|
494
|
+
platform state unless a provider flow explicitly requires otherwise.
|
|
495
|
+
- Keep provider-specific session files inside the Saved Computer or encrypted
|
|
496
|
+
provider vault according to the final security design and provider terms.
|
|
497
|
+
- If raw API-key entry is unavoidable for a provider, label it Advanced and make
|
|
498
|
+
the safer guided login path the default.
|
|
499
|
+
|
|
500
|
+
## Architecture Direction
|
|
501
|
+
|
|
502
|
+
The provider split should be:
|
|
503
|
+
|
|
504
|
+
- Browser stays on Cloudflare Browser Run.
|
|
505
|
+
- Creator one-shot sandbox/compute stays on the current Cloudflare sandbox
|
|
506
|
+
provider path.
|
|
507
|
+
- Pro account-attached Agent Computers and hosted Pro goal runners move to E2B
|
|
508
|
+
through a hosted provider boundary.
|
|
509
|
+
- `vc-tools-api` remains the authoritative control plane.
|
|
510
|
+
- D1 remains the job, quota, usage, audit, grant-derived status, and artifact
|
|
511
|
+
metadata store.
|
|
512
|
+
- R2 remains the artifact byte store.
|
|
513
|
+
- Queue/DLQ remains the async dispatch and retry lane.
|
|
514
|
+
- Vibecodr subscription state remains the entitlement source.
|
|
515
|
+
|
|
516
|
+
For Cloudflare Workers, the E2B integration should start from REST/API calls,
|
|
517
|
+
not the E2B JavaScript SDK, unless current docs or a live build prove Worker
|
|
518
|
+
compatibility. E2B's Worker/Edge troubleshooting page currently says the JS SDK
|
|
519
|
+
does not support Cloudflare Workers because of sandbox transport dependencies.
|
|
520
|
+
|
|
521
|
+
Preferred Worker integration path:
|
|
522
|
+
|
|
523
|
+
> Option A: Direct REST from the Worker for everything.
|
|
524
|
+
|
|
525
|
+
Use `fetch()` from the hosted Worker to `api.e2b.app` for sandbox lifecycle, and
|
|
526
|
+
use `fetch()` to the sandbox's envd HTTP endpoints for commands and files. If
|
|
527
|
+
envd is callable from Workers over HTTP, this avoids a proxy, sidecar, or extra
|
|
528
|
+
infrastructure layer.
|
|
529
|
+
|
|
530
|
+
Phase 2 must prove this with a real spike before adding more infrastructure:
|
|
531
|
+
|
|
532
|
+
- create a live E2B sandbox from a Cloudflare Worker using REST
|
|
533
|
+
- call an envd command endpoint such as `POST /process/start` from that Worker
|
|
534
|
+
- prove stdout/stderr/result retrieval works
|
|
535
|
+
- prove file read/write over envd works or record the exact blocker
|
|
536
|
+
- prove timeout, cancellation/kill or pause, and provider-error handling shape
|
|
537
|
+
- prove no provider token or envd access token leaks to client/browser state
|
|
538
|
+
|
|
539
|
+
If this spike works, direct Worker REST remains the implementation direction.
|
|
540
|
+
Only introduce a proxy, sidecar, Node service, or extra infra if the real spike
|
|
541
|
+
proves the Worker cannot directly call the lifecycle/envd surfaces safely.
|
|
542
|
+
|
|
543
|
+
Provider boundary target:
|
|
544
|
+
|
|
545
|
+
```text
|
|
546
|
+
Hosted tool request
|
|
547
|
+
-> auth and grant validation
|
|
548
|
+
-> plan and quota reservation
|
|
549
|
+
-> audit-before-cost event
|
|
550
|
+
-> Queue job
|
|
551
|
+
-> provider-specific worker path
|
|
552
|
+
browser.* -> Cloudflare Browser Run
|
|
553
|
+
computer.* -> route by plan/provider policy
|
|
554
|
+
Creator one-shot -> Cloudflare sandbox provider
|
|
555
|
+
Pro Saved/scratch/operator -> E2B REST/API
|
|
556
|
+
-> artifact storage in R2
|
|
557
|
+
-> D1 usage/job reconciliation
|
|
558
|
+
-> user/agent receives result handles, not provider credentials
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
## Compute Provider Policy
|
|
562
|
+
|
|
563
|
+
There are two compute lanes after the refactor. They share the hosted
|
|
564
|
+
`vc-tools` control plane, grants, usage accounting, artifact rules, and stable
|
|
565
|
+
CLI/API/MCP surfaces, but they do not share the same provider or lifecycle
|
|
566
|
+
promise.
|
|
567
|
+
|
|
568
|
+
| Lane | Eligibility | Provider | Lifecycle promise |
|
|
569
|
+
| --- | --- | --- | --- |
|
|
570
|
+
| Creator one-shot sandbox | Creator | Current Cloudflare sandbox path | Bounded one-shot run; kill/cleanup on completion, failure, cancellation, or timeout |
|
|
571
|
+
| Pro Saved Computer | Pro | E2B | Account-attached primary computer; pause on idle, resume through `vc-tools`, never automated idle-kill while the subscription and safety posture are valid |
|
|
572
|
+
| Pro scratch/project computer | Pro or future Team/Add-on | E2B when offered | Explicitly requested separate computer with its own lifecycle contract |
|
|
573
|
+
|
|
574
|
+
The E2B lane is the Pro implementation of the Agent Computer primitive. It
|
|
575
|
+
should preserve the current hosted control plane while expanding what the
|
|
576
|
+
compute environment can do.
|
|
577
|
+
|
|
578
|
+
The E2B-backed Agent Computer lane should preserve these defaults:
|
|
579
|
+
|
|
580
|
+
- Server-side `E2B_API_KEY` only.
|
|
581
|
+
- Secure sandboxes by default.
|
|
582
|
+
- No raw `envdAccessToken`, traffic access token, MCP gateway token, or sandbox
|
|
583
|
+
host token in browser-visible state.
|
|
584
|
+
- Pro E2B-backed Agent Computers have public outbound internet access by default for the
|
|
585
|
+
agent's compute environment.
|
|
586
|
+
- Public outbound internet does not mean private/internal reach. `vc-tools`
|
|
587
|
+
should block private networks, localhost outside the computer, link-local and
|
|
588
|
+
metadata endpoints, Vibecodr/provider internal infrastructure, public inbound
|
|
589
|
+
exposure, and abuse patterns unless an explicit future grant opens a narrow
|
|
590
|
+
lane.
|
|
591
|
+
- Public preview URLs only through an explicit future product policy.
|
|
592
|
+
- Creator Cloudflare sandbox jobs and other disposable one-shot computers
|
|
593
|
+
should kill on completion by default.
|
|
594
|
+
- Disposable one-shot computers should not auto-resume.
|
|
595
|
+
- Pro Saved Computers should use E2B lifecycle auto-pause:
|
|
596
|
+
`timeoutMs: 10 * 60 * 1000` with `lifecycle.onTimeout: "pause"`.
|
|
597
|
+
Timeout should sleep the computer instead of deleting state.
|
|
598
|
+
- Pro Saved Computers are account-attached by default. A separate scratch,
|
|
599
|
+
project, or disposable computer must be an explicit user/product choice, not
|
|
600
|
+
the silent default.
|
|
601
|
+
- Auto-pause is a Saved Computer behavior, not an implicit persistence promise
|
|
602
|
+
for every disposable compute job.
|
|
603
|
+
- Auto-resume should stay off by default unless separately approved. The user or
|
|
604
|
+
agent should resume through the `vc-tools` control plane so Cloudflare-owned
|
|
605
|
+
plan, quota, activity, and audit state stay authoritative.
|
|
606
|
+
- Active hosted goal runs must hold a renewable work lease in the Goal DO. If
|
|
607
|
+
the lease expires, new cost-bearing actions are denied and the computer should
|
|
608
|
+
pause rather than continue burning provider time invisibly.
|
|
609
|
+
- Automated cleanup must not kill a Pro Saved Computer solely because it is idle
|
|
610
|
+
or old. It may pause, repair, reconcile, prompt the user, or follow explicit
|
|
611
|
+
account-lifecycle/export policy. Permanent kill requires explicit delete/reset,
|
|
612
|
+
abuse/security/legal action, or unrecoverable provider failure.
|
|
613
|
+
- Snapshots should be a separate product capability, not implicit behavior for
|
|
614
|
+
every command.
|
|
615
|
+
- E2B filesystem, volumes, and snapshots are execution-plane state, not
|
|
616
|
+
`vc-tools` source of truth. Durable user-visible outputs must be promoted into
|
|
617
|
+
R2/D1.
|
|
618
|
+
- Every cost-bearing computer job must have D1 reservation, audit, capacity
|
|
619
|
+
gating, timeout, cancellation, artifact, and reconciliation behavior.
|
|
620
|
+
|
|
621
|
+
## Browser Versus Computer Network
|
|
622
|
+
|
|
623
|
+
Browser Run and Agent Computer internet are separate product surfaces:
|
|
624
|
+
|
|
625
|
+
| Surface | User | Default purpose | Provider |
|
|
626
|
+
| --- | --- | --- | --- |
|
|
627
|
+
| Browser Run | humans and agents | Browser-native public-web work: render, screenshot, PDF, markdown, crawl, and longer browser tasks | Cloudflare Browser Run |
|
|
628
|
+
| Creator sandbox internet | agents | Existing bounded one-shot compute behavior | Cloudflare sandbox path |
|
|
629
|
+
| Pro Agent Computer internet | agents | Compute-environment internet: package installs, git, public docs, public APIs, downloads, and tool execution inside the computer | E2B-backed Agent Computer |
|
|
630
|
+
|
|
631
|
+
The product line should be:
|
|
632
|
+
|
|
633
|
+
> Browser Run is the browser. Agent Computer internet is the agent's computer
|
|
634
|
+
> network.
|
|
635
|
+
|
|
636
|
+
This avoids ripping out or duplicating Browser Run. It also prevents the Agent
|
|
637
|
+
Computer from becoming a browser automation product just because it can reach
|
|
638
|
+
the internet.
|
|
639
|
+
|
|
640
|
+
## Agent Computer Preview
|
|
641
|
+
|
|
642
|
+
Agent Computers can emit UI by running services inside the computer and exposing
|
|
643
|
+
them through a policy-controlled preview handle.
|
|
644
|
+
|
|
645
|
+
User-facing rule:
|
|
646
|
+
|
|
647
|
+
> Computer Preview lets you see what your agent is running inside its computer.
|
|
648
|
+
|
|
649
|
+
Product boundary:
|
|
650
|
+
|
|
651
|
+
| Surface | Meaning | Default stance |
|
|
652
|
+
| --- | --- | --- |
|
|
653
|
+
| Private computer preview | Temporary owner-scoped view of a service running inside the Agent Computer | Allowed when the plan/grant allows previews |
|
|
654
|
+
| Browser Run verification | Browser product inspects or screenshots the preview for evidence | Allowed through Browser Run |
|
|
655
|
+
| Public preview link | Anyone with a link can view the temporary running service | Requires explicit user action and a future sharing policy |
|
|
656
|
+
| Publish/deploy | Durable external availability outside the Agent Computer | Separate stronger consent boundary |
|
|
657
|
+
| Desktop view | Full graphical view/control of the computer | Later Pro/Studio feature, not required for v1 preview |
|
|
658
|
+
|
|
659
|
+
Default preview policy:
|
|
660
|
+
|
|
661
|
+
- The agent may start a local web server or UI process inside the computer.
|
|
662
|
+
- `vc-tools` may detect or accept a port and create a private preview handle.
|
|
663
|
+
- The preview should be owner-scoped by default and routed through `vc-tools` or
|
|
664
|
+
another token-gated boundary so raw provider URLs and traffic tokens are not
|
|
665
|
+
exposed as the normal UX.
|
|
666
|
+
- Preview state should show service status, port, visibility, owner access,
|
|
667
|
+
expiration, and revoke/stop controls.
|
|
668
|
+
- Preview traffic alone should not silently keep a Pro Saved Computer running
|
|
669
|
+
forever. Owner activity can renew the interactive session, but public or
|
|
670
|
+
background traffic should be time-bound and should not bypass the computer's
|
|
671
|
+
idle/limit policy.
|
|
672
|
+
- Private preview is not public sharing, publishing, hosting, or deployment.
|
|
673
|
+
- Public preview links require explicit user intent and a policy-controlled
|
|
674
|
+
grant.
|
|
675
|
+
- Durable publish/deploy requires a separate stronger consent flow.
|
|
676
|
+
- Browser Run remains the verification partner for previewed web surfaces.
|
|
677
|
+
|
|
678
|
+
## Goals Coordination Primitive
|
|
679
|
+
|
|
680
|
+
Goals are a future coordination layer above VC Tools jobs. They organize hosted
|
|
681
|
+
work around an objective without replacing Browser Run, Agent Computers, Jobs,
|
|
682
|
+
Artifact Shelf, Grants, or Usage.
|
|
683
|
+
|
|
684
|
+
Goals answer:
|
|
685
|
+
|
|
686
|
+
- what the agent is trying to accomplish
|
|
687
|
+
- whether the work is active, complete, paused, budget-limited, or abandoned
|
|
688
|
+
- what budget the work is allowed to burn
|
|
689
|
+
- which jobs belong to the goal
|
|
690
|
+
- which artifacts belong to the goal
|
|
691
|
+
- what checkpoints the user should read when they return
|
|
692
|
+
- what verification expectation or final evidence applies
|
|
693
|
+
|
|
694
|
+
Goals have one product requirement: continuation. A goal that only stores state
|
|
695
|
+
is useful internally, but it is antithetical to the user promise if it ships as
|
|
696
|
+
the product. The product promise is not "your agent may tag work with a goal."
|
|
697
|
+
It is "give your agent a job and let it keep working until it is done, paused,
|
|
698
|
+
blocked, abandoned, or out of budget."
|
|
699
|
+
|
|
700
|
+
### Goal Contract And Enforcement
|
|
701
|
+
|
|
702
|
+
The goal contract is the shared substrate for every runner. It is required, but
|
|
703
|
+
it is not shippable as the standalone product.
|
|
704
|
+
|
|
705
|
+
Required contract behavior:
|
|
706
|
+
|
|
707
|
+
- Agents can call `goals.create`, `goals.get`, `goals.checkpoint`, and
|
|
708
|
+
`goals.complete` through CLI/API/MCP.
|
|
709
|
+
- Hosted tool calls may include `goal_id`.
|
|
710
|
+
- Jobs tagged with `goal_id` are linked to the goal.
|
|
711
|
+
- Artifacts produced by those jobs are linked to the goal.
|
|
712
|
+
- Goal budgets are enforced in addition to actor/account quota.
|
|
713
|
+
- A terminal goal state blocks future cost-bearing tool calls tagged with that
|
|
714
|
+
goal.
|
|
715
|
+
- Checkpoints are user-facing progress notes, not internal audit events.
|
|
716
|
+
|
|
717
|
+
Preferred architecture:
|
|
718
|
+
|
|
719
|
+
- A Goal Durable Object is the hot synchronization point for one goal.
|
|
720
|
+
- Durable Object SQL stores canonical per-goal state, reservations,
|
|
721
|
+
checkpoints, and activity.
|
|
722
|
+
- D1 stores the account-scoped read model for lists, dashboard views, linked
|
|
723
|
+
jobs, linked artifacts, and reporting.
|
|
724
|
+
- The hosted Worker routes cost-bearing tool calls through the Goal DO before
|
|
725
|
+
provider execution when `goal_id` is present.
|
|
726
|
+
- The Goal DO decides whether the goal is active and whether budget can be
|
|
727
|
+
reserved.
|
|
728
|
+
- D1 remains the broader product query surface; the Goal DO owns hot atomic
|
|
729
|
+
lifecycle and budget enforcement for the goal.
|
|
730
|
+
|
|
731
|
+
### Goal Runner Surfaces
|
|
732
|
+
|
|
733
|
+
The first product-grade Goals release must include at least one continuation
|
|
734
|
+
surface that `vc-tools` controls enough to reprompt, resume, or relaunch the
|
|
735
|
+
agent while the Goal DO says the work is still active.
|
|
736
|
+
|
|
737
|
+
The canonical first product lane is hosted, Pro-only, and post-E2B. Local
|
|
738
|
+
adapters can follow as reach/compatibility, but they should not be the spine of
|
|
739
|
+
the first real Goals product.
|
|
740
|
+
|
|
741
|
+
There are two acceptable runner lanes:
|
|
742
|
+
|
|
743
|
+
| Runner lane | Where the agent runs | Product role |
|
|
744
|
+
| --- | --- | --- |
|
|
745
|
+
| Hosted Goal Runner | E2B-backed Agent Computer | Pro-only first product lane. Lets a user park a goal and walk away while `vc-tools` runs the agent inside the computer until done, paused, blocked, budget-limited, or explicitly stopped. |
|
|
746
|
+
| Local Goal Runner | User's machine, launched by `vc-tools` | Later adapter lane. Lets a user bring their own agent CLI while `vc-tools` owns the goal loop, grants, checkpoints, and continuation guardrails where the harness supports it. |
|
|
747
|
+
|
|
748
|
+
In the hosted runner lane, the user gives `vc-tools` a goal plus a runner
|
|
749
|
+
choice. `vc-tools` starts or resumes an Agent Computer, boots an agent runner
|
|
750
|
+
inside it, gives the runner a scoped `vc-tools` grant, and lets that runner work
|
|
751
|
+
against the same goal contract.
|
|
752
|
+
|
|
753
|
+
The local runner is acceptable later only if it truly owns continuation. It may
|
|
754
|
+
launch Claude Code, Codex, or another supported harness, but it must be able to
|
|
755
|
+
observe the child run ending, read goal state, and use a supported hook, resume
|
|
756
|
+
command, or relaunch loop to continue work. A manually started external agent
|
|
757
|
+
that merely calls `goals.*` is compatibility mode, not the shippable Goals
|
|
758
|
+
product.
|
|
759
|
+
|
|
760
|
+
Required runner behavior:
|
|
761
|
+
|
|
762
|
+
- The runner uses the same `goals.*`, `browser.*`, `computer.*`, `shelf.*`,
|
|
763
|
+
`jobs.*`, and `usage.*` surfaces available to external agents.
|
|
764
|
+
- The runner, not a Worker request handler, owns the continuation loop.
|
|
765
|
+
- The Worker remains the control plane for auth, grants, goal state, quota,
|
|
766
|
+
provider lifecycle, artifacts, and usage.
|
|
767
|
+
- Active hosted goal runs keep the Agent Computer alive while meaningful work is
|
|
768
|
+
progressing within plan and budget limits.
|
|
769
|
+
- Active Pro hosted goal runs do not have a short wall-clock cap. They continue
|
|
770
|
+
while meaningful work is happening and the account remains within plan limits,
|
|
771
|
+
goal budget, concurrency caps, provider runtime ceilings, and abuse controls.
|
|
772
|
+
- The hosted runner must checkpoint and safely pause/resume or rotate before a
|
|
773
|
+
provider continuous-runtime ceiling, so long goals can continue without
|
|
774
|
+
pretending a single computer process is immortal.
|
|
775
|
+
- When the runner becomes idle, finishes, stalls, pauses, or hits a limit, a Pro
|
|
776
|
+
Saved Computer can auto-pause after 10 minutes instead of losing state.
|
|
777
|
+
- The CLI runner must not execute browser or computer work locally; it only
|
|
778
|
+
starts and supervises an agent process that calls hosted `vc-tools` tools.
|
|
779
|
+
|
|
780
|
+
## Goal Continuation And Reprompting
|
|
781
|
+
|
|
782
|
+
`vc-tools` cannot reliably reprompt an arbitrary external agent that it did not
|
|
783
|
+
launch, configure, or host. MCP tools alone are not enough: a remote MCP server
|
|
784
|
+
can expose tools, prompts, resources, and optional client-side features, but it
|
|
785
|
+
does not give `vc-tools` a universal background channel to push a new prompt
|
|
786
|
+
into every agent after that agent has ended its turn.
|
|
787
|
+
|
|
788
|
+
Current MCP client-side features are useful but not sufficient as the primary
|
|
789
|
+
continuation channel:
|
|
790
|
+
|
|
791
|
+
- Server prompts can expose templates, but the client decides how and when to
|
|
792
|
+
show or use them.
|
|
793
|
+
- Sampling can let a server request model output through a client, but client
|
|
794
|
+
support and UX are optional, and server-to-client requests must be associated
|
|
795
|
+
with an originating client request.
|
|
796
|
+
- Elicitation can request user input through a client during an interaction, but
|
|
797
|
+
it is not a universal "resume this agent later" primitive.
|
|
798
|
+
|
|
799
|
+
Therefore Goals need explicit continuation surfaces:
|
|
800
|
+
|
|
801
|
+
| Surface | Product role | Continuation strength |
|
|
802
|
+
| --- | --- | --- |
|
|
803
|
+
| Hosted E2B runner | Pro product lane | Strongest: `vc-tools` owns the runner process inside an Agent Computer and can continue while the account remains within limits. |
|
|
804
|
+
| Goal-bound grant | Enforcement | Medium: every hosted tool call is attached to the goal and blocked when the goal is terminal, but the agent still decides whether to continue. |
|
|
805
|
+
| `vc-tools goal run -- <agent command>` | Later local runner | Strong when supported: `vc-tools` launches the agent, injects goal context, and can reprompt/relaunch while the goal remains active. |
|
|
806
|
+
| Agent-specific adapters | Later local runner | Stronger when supported: use known agent CLI/session/resume hooks where available. |
|
|
807
|
+
| MCP-only goal tools | Compatibility substrate | Weak: agent must voluntarily use goals and keep working. This cannot be the shipped Goals phase. |
|
|
808
|
+
|
|
809
|
+
The later local continuation surface should be:
|
|
810
|
+
|
|
811
|
+
```text
|
|
812
|
+
vc-tools goal run "Objective..." -- <agent command>
|
|
813
|
+
```
|
|
814
|
+
|
|
815
|
+
This wrapper should:
|
|
816
|
+
|
|
817
|
+
- create the goal
|
|
818
|
+
- mint a short-lived goal-bound `vc-tools` grant
|
|
819
|
+
- configure the child process with `VC_TOOLS_GOAL_ID`, token file, MCP URL, and
|
|
820
|
+
any agent-specific config the adapter supports
|
|
821
|
+
- pass a continuation prompt containing objective, budget, current status,
|
|
822
|
+
checkpoint expectations, and completion criteria
|
|
823
|
+
- watch the child process exit
|
|
824
|
+
- read the goal state after each iteration
|
|
825
|
+
- relaunch or reprompt the agent while the goal remains active and within the
|
|
826
|
+
wrapper's continuation guardrails
|
|
827
|
+
- stop when the goal is complete, budget-limited, abandoned, paused, or when an
|
|
828
|
+
iteration produces no meaningful tool work/checkpoint progress
|
|
829
|
+
|
|
830
|
+
Named adapters should be evaluated in this order:
|
|
831
|
+
|
|
832
|
+
1. Supported hook/plugin integration. Prefer native lifecycle hooks such as a
|
|
833
|
+
Stop hook that can block agent shutdown and inject a continuation message.
|
|
834
|
+
2. Non-interactive launch/resume integration. Use CLI surfaces that accept a
|
|
835
|
+
prompt and resume an existing session when available.
|
|
836
|
+
3. Generic subprocess relaunch. Use this only when the agent can persist enough
|
|
837
|
+
state in files, checkpoints, or a session id to make relaunch safe.
|
|
838
|
+
4. UI or keystroke injection. Do not ship this as a v1 continuation surface.
|
|
839
|
+
|
|
840
|
+
The Ralph Wiggum pattern belongs in the first two categories: it proves that a
|
|
841
|
+
Claude Code continuation product works when the harness has either a Stop hook
|
|
842
|
+
or an outer loop that owns the next prompt. That is the model to copy, not
|
|
843
|
+
MCP-only goal tagging.
|
|
844
|
+
|
|
845
|
+
The generic wrapper should be honest about support:
|
|
846
|
+
|
|
847
|
+
- Agents launched through the wrapper can be reprompted or relaunched.
|
|
848
|
+
- Agents manually started elsewhere can use goals, but cannot be forced to
|
|
849
|
+
continue unless their host/client exposes a supported hook.
|
|
850
|
+
- UI/keystroke injection into arbitrary agent apps is not a v1 product surface;
|
|
851
|
+
use explicit wrappers, adapters, or hosted runners instead.
|
|
852
|
+
|
|
853
|
+
Goal continuation should include a no-progress guard similar in spirit to
|
|
854
|
+
Codex's continuation suppression:
|
|
855
|
+
|
|
856
|
+
- if an iteration produces no `vc-tools` tool call, checkpoint, artifact, or
|
|
857
|
+
state change, the wrapper should stop and mark the goal `needs_human` or pause
|
|
858
|
+
with a clear reason instead of relaunching forever
|
|
859
|
+
- the Goal DO remains the enforcement point for terminal state and budget
|
|
860
|
+
exhaustion
|
|
861
|
+
- the wrapper is the continuation driver, not the source of truth
|
|
862
|
+
|
|
863
|
+
## Agent Computer Filesystem
|
|
864
|
+
|
|
865
|
+
Agent Computers should feel like real computers, not fake container folders.
|
|
866
|
+
The product should not teach `/workspace` as the main concept.
|
|
867
|
+
|
|
868
|
+
Default filesystem contract:
|
|
869
|
+
|
|
870
|
+
| Filesystem concept | Decision |
|
|
871
|
+
| --- | --- |
|
|
872
|
+
| Provider default user | `user` |
|
|
873
|
+
| Default home / cwd | `/home/user` |
|
|
874
|
+
| Human-facing display | `~` |
|
|
875
|
+
| Default project folder | `~/project` |
|
|
876
|
+
| Default output folder | `~/outputs` |
|
|
877
|
+
| Optional agent notes folder | `~/notes` |
|
|
878
|
+
|
|
879
|
+
Agents may create, inspect, install, configure, and modify files according to
|
|
880
|
+
the computer's OS permissions and `vc-tools` safety policy. This includes
|
|
881
|
+
dotfiles, package-manager state, config files, and system paths where the OS
|
|
882
|
+
allows it. `vc-tools` should not turn the computer into a narrow fake
|
|
883
|
+
filesystem.
|
|
884
|
+
|
|
885
|
+
The stricter boundary is durable export, not local computer use.
|
|
886
|
+
|
|
887
|
+
## Artifact Shelf And Save To Shelf Policy
|
|
888
|
+
|
|
889
|
+
Artifact Shelf is durable agentic storage, not a formal memory system and not
|
|
890
|
+
an automatic backup of the computer.
|
|
891
|
+
|
|
892
|
+
There are two Shelf paths:
|
|
893
|
+
|
|
894
|
+
1. Hosted tools can automatically store bounded job-result artifacts. Examples
|
|
895
|
+
include browser screenshots, PDFs, markdown, crawl JSON, command/test logs,
|
|
896
|
+
closure metadata, and result bundles that are part of the tool output.
|
|
897
|
+
2. Users and agents can explicitly save selected computer files to Shelf at any
|
|
898
|
+
time. This is the path-targeted "Save to Shelf" action.
|
|
899
|
+
|
|
900
|
+
Closed policy:
|
|
901
|
+
|
|
902
|
+
- Automatic job-result artifacts are allowed when they are the expected output
|
|
903
|
+
of a hosted tool run and remain bounded by ownership, retention, storage
|
|
904
|
+
quota, type validation, and cleanup policy.
|
|
905
|
+
- Arbitrary computer files, package caches, intermediate work, generated files,
|
|
906
|
+
reports, screenshots, logs, and downloaded files are not swept into Shelf
|
|
907
|
+
automatically just because they exist in the Agent Computer.
|
|
908
|
+
- The agent or user can save a specific file path at any time during an Agent
|
|
909
|
+
Computer run.
|
|
910
|
+
- Save UX/DX should make the happy path easy:
|
|
911
|
+
|
|
912
|
+
```text
|
|
913
|
+
vc-tools shelf save ~/outputs/report.pdf
|
|
914
|
+
vc-tools shelf save ~/project/final.patch
|
|
915
|
+
vc-tools shelf save ~/project/dist.zip
|
|
916
|
+
```
|
|
917
|
+
|
|
918
|
+
- The API/tool contract should support a path-targeted save from a computer:
|
|
919
|
+
|
|
920
|
+
```json
|
|
921
|
+
{
|
|
922
|
+
"capability": "shelf.save",
|
|
923
|
+
"computerId": "comp_123",
|
|
924
|
+
"path": "~/outputs/report.pdf",
|
|
925
|
+
"name": "QA report"
|
|
926
|
+
}
|
|
927
|
+
```
|
|
928
|
+
|
|
929
|
+
- `shelf.save` can map internally to the existing `artifact.create`
|
|
930
|
+
capability while public docs and agent instructions prefer "Save to Shelf".
|
|
931
|
+
- If a disposable computer is discarded, unsaved files disappear with the
|
|
932
|
+
computer. Saved Shelf artifacts follow artifact retention policy instead.
|
|
933
|
+
|
|
934
|
+
Sensitive, hidden, credential-like, cache-heavy, or system-path exports are
|
|
935
|
+
allowed but must require double confirmation. This avoids silently preserving
|
|
936
|
+
secrets or irrelevant machine state while keeping the computer honest and
|
|
937
|
+
powerful.
|
|
938
|
+
|
|
939
|
+
Double-confirmation exports require:
|
|
940
|
+
|
|
941
|
+
- a clear warning about credential/system/machine-state risk
|
|
942
|
+
- an explicit user/agent reason
|
|
943
|
+
- a confirmation challenge or token
|
|
944
|
+
- an audit record
|
|
945
|
+
- human approval in v1 unless a specific sensitive-export grant exists
|
|
946
|
+
|
|
947
|
+
## Saved Computers
|
|
948
|
+
|
|
949
|
+
Saved Computers are the Pro-only persistence feature for Agent Computers.
|
|
950
|
+
They should feel like account-attached devices, not disposable jobs. A Pro
|
|
951
|
+
user's primary Saved Computer is attached to that user's account by default
|
|
952
|
+
unless the user explicitly chooses a scratch, project, or otherwise separate
|
|
953
|
+
computer.
|
|
954
|
+
|
|
955
|
+
Closed policy:
|
|
956
|
+
|
|
957
|
+
| Field | Decision |
|
|
958
|
+
| --- | --- |
|
|
959
|
+
| Eligibility | Pro only |
|
|
960
|
+
| Free affordance | Free gets no Agent Computer |
|
|
961
|
+
| Creator affordance | Creator stays on Cloudflare one-shot sandbox compute and does not see a locked Save Computer action in the task flow |
|
|
962
|
+
| Pro included count | One primary account-attached Saved Computer by default |
|
|
963
|
+
| Additional computers | Explicit future plan/add-on/project/scratch decision, not the default device model |
|
|
964
|
+
| Retention model | Pause-first persistence while Pro subscription and safety posture are valid |
|
|
965
|
+
| Auto-pause | Pro Saved Computers pause after 10 minutes of inactivity/timeout instead of killing state |
|
|
966
|
+
| Active Pro goal run | Do not auto-pause for a short wall-clock timeout while meaningful work is happening and account/provider limits allow continuation |
|
|
967
|
+
| Provider-held state | E2B may hold persisted filesystem and machine state |
|
|
968
|
+
| Platform truth | Cloudflare/D1 owns identity, ownership, eligibility, audit, job metadata, artifact metadata, quota, and billing state |
|
|
969
|
+
| Deletion after inactivity | No automated inactivity kill for active Pro subscribers |
|
|
970
|
+
| Kill/delete path | Explicit user delete/reset, plan/account lifecycle with clear notice or export window, abuse/security/legal action, or unrecoverable provider failure |
|
|
971
|
+
| Artifacts after computer expiry | Existing Shelf artifacts, usage records, audit records, and job records follow their own retention policies |
|
|
972
|
+
|
|
973
|
+
Activity that can resume or keep the Pro Saved Computer active must be
|
|
974
|
+
intentional user- or agent-initiated use:
|
|
975
|
+
|
|
976
|
+
- user opens or resumes the Saved Computer
|
|
977
|
+
- agent successfully resumes the Saved Computer
|
|
978
|
+
- agent runs a command
|
|
979
|
+
- agent writes, creates, deletes, or updates files
|
|
980
|
+
- user or agent creates a Shelf artifact from that computer
|
|
981
|
+
- user renames, pins, restores, deletes, or changes settings on the computer
|
|
982
|
+
- successful resume after sleep
|
|
983
|
+
|
|
984
|
+
Passive platform behavior must not resume a sleeping computer or prevent
|
|
985
|
+
auto-pause:
|
|
986
|
+
|
|
987
|
+
- dashboard list views
|
|
988
|
+
- background scans
|
|
989
|
+
- quota checks
|
|
990
|
+
- billing checks
|
|
991
|
+
- passive health checks
|
|
992
|
+
- provider cleanup retries
|
|
993
|
+
- internal migration jobs
|
|
994
|
+
- alerting or telemetry processing
|
|
995
|
+
- failed resume attempts that do not restore usable access
|
|
996
|
+
|
|
997
|
+
The user-facing contract should be:
|
|
998
|
+
|
|
999
|
+
> Your Pro computer is yours while your plan is active. When you walk away, it
|
|
1000
|
+
> sleeps instead of disappearing.
|
|
1001
|
+
|
|
1002
|
+
The lifecycle contract should be:
|
|
1003
|
+
|
|
1004
|
+
> When you walk away from a Pro Saved Computer, it sleeps after 10 minutes
|
|
1005
|
+
> instead of being deleted. Kill is deletion, not cleanup.
|
|
1006
|
+
|
|
1007
|
+
## Operator Computer
|
|
1008
|
+
|
|
1009
|
+
The Operator Computer is a separate private lane for Braden to learn and test
|
|
1010
|
+
cloud-side compute before productizing the Pro Saved Computer. It is not a
|
|
1011
|
+
Creator feature, not a Free feature, and not the customer-facing default.
|
|
1012
|
+
|
|
1013
|
+
Purpose:
|
|
1014
|
+
|
|
1015
|
+
- let Braden use and inspect a durable E2B-backed cloud workbench
|
|
1016
|
+
- exercise Cloudflare AI Gateway model routing from inside a sandboxed computer
|
|
1017
|
+
- test MCP, previews, artifacts, pause/resume, package installs, and hosted
|
|
1018
|
+
agent behavior under real cloud conditions
|
|
1019
|
+
- discover which pieces should become the Pro Saved Computer product contract
|
|
1020
|
+
|
|
1021
|
+
Closed operator policy:
|
|
1022
|
+
|
|
1023
|
+
| Field | Decision |
|
|
1024
|
+
| --- | --- |
|
|
1025
|
+
| Owner | Braden/operator only |
|
|
1026
|
+
| Product promise | Experimental operator workbench, not public `vc-tools` entitlement |
|
|
1027
|
+
| Provider | E2B |
|
|
1028
|
+
| Model route | Cloudflare AI Gateway `dynamic/vibecodr-primary` by default |
|
|
1029
|
+
| Network | Builder network tier for package installs, git, public docs, and provider experiments |
|
|
1030
|
+
| Preview | Private owner-only preview |
|
|
1031
|
+
| MCP/access | Owner-scoped and token-gated; no public raw provider tokens |
|
|
1032
|
+
| Lifecycle | Pause on idle, manual resume, manual delete only |
|
|
1033
|
+
| Cleanup | Pause/reconcile/repair by default; kill only by explicit operator delete/reset or safety/provider failure |
|
|
1034
|
+
|
|
1035
|
+
The Operator Computer may be more permissive and tool-rich than the eventual
|
|
1036
|
+
Pro default. It can include `node`, `pnpm`, `bun`, `python`, `uv`, `git`, `gh`,
|
|
1037
|
+
`wrangler`, E2B CLI, Playwright dependencies, MCP test clients, and agent
|
|
1038
|
+
runner experiments. It still must not receive broad Cloudflare admin authority,
|
|
1039
|
+
raw provider secrets, or platform signing secrets by default. Use narrow grants,
|
|
1040
|
+
Cloudflare AI Gateway BYOK, and server-side control-plane calls instead.
|
|
1041
|
+
|
|
1042
|
+
The Operator Computer should feed product learning, but product docs must not
|
|
1043
|
+
inherit its extra privileges automatically. Anything promoted from operator
|
|
1044
|
+
practice into Pro must pass the normal grants, usage, network, preview,
|
|
1045
|
+
artifact, and security review.
|
|
1046
|
+
|
|
1047
|
+
## Job Records And Summaries
|
|
1048
|
+
|
|
1049
|
+
Every Agent Computer run keeps lightweight platform metadata even when no files
|
|
1050
|
+
are saved to the Shelf.
|
|
1051
|
+
|
|
1052
|
+
Minimum durable record:
|
|
1053
|
+
|
|
1054
|
+
- job id
|
|
1055
|
+
- computer id
|
|
1056
|
+
- actor/user id
|
|
1057
|
+
- workspace or account scope when applicable
|
|
1058
|
+
- capability
|
|
1059
|
+
- plan
|
|
1060
|
+
- status
|
|
1061
|
+
- created, started, and completed timestamps
|
|
1062
|
+
- duration and metered computer usage
|
|
1063
|
+
- exit code or failure reason
|
|
1064
|
+
- short final summary
|
|
1065
|
+
- saved Shelf artifact ids, if any
|
|
1066
|
+
- provider reference where needed, server-side only
|
|
1067
|
+
- audit event ids
|
|
1068
|
+
|
|
1069
|
+
The final summary should be short and user-readable, not a full transcript or
|
|
1070
|
+
raw log dump.
|
|
1071
|
+
|
|
1072
|
+
## Cost Protection Doctrine
|
|
1073
|
+
|
|
1074
|
+
Cost protection must be strict underneath the product and quiet in the normal
|
|
1075
|
+
user path. VC Tools should feel generous, but never unbounded.
|
|
1076
|
+
|
|
1077
|
+
User-facing rule:
|
|
1078
|
+
|
|
1079
|
+
> Your agent can keep working while it is making progress and your account has
|
|
1080
|
+
> capacity. VC Tools will pause, ask, or stop before work can quietly run past
|
|
1081
|
+
> your limits.
|
|
1082
|
+
|
|
1083
|
+
Product stance:
|
|
1084
|
+
|
|
1085
|
+
| Boundary | Protection | User friction |
|
|
1086
|
+
| --- | --- | --- |
|
|
1087
|
+
| Starting cost-bearing work | Entitlement, grant, quota, budget, concurrency, and operator-state checks before provider creation/resume/command execution | Invisible unless denied |
|
|
1088
|
+
| Normal active work | Reservation and settlement meters track actual usage against account and goal budgets | Invisible |
|
|
1089
|
+
| Approaching limit | Calm status/warning in CLI/dashboard/work receipt | Visible but non-blocking |
|
|
1090
|
+
| Hitting account or goal limit | Pause/stop new cost-bearing work and preserve resumable state when possible | Blocking with clear reason |
|
|
1091
|
+
| Idle Saved Computer | Auto-pause after 10 minutes of inactivity/timeout | Invisible or low-noise status |
|
|
1092
|
+
| Active Pro Goal Run | Renewable work lease while meaningful progress continues | Invisible while healthy |
|
|
1093
|
+
| Stalled/no-progress goal | Pause or `needs_human`, auto-pause computer, keep work receipt | Visible with next action |
|
|
1094
|
+
| Provider runtime ceiling | Checkpoint and pause/resume or rotate before hard stop | Invisible if successful, visible if blocked |
|
|
1095
|
+
| Creator/disposable one-shot job | Kill on completion, cancel, failure, or timeout | Expected lifecycle |
|
|
1096
|
+
| Public preview/share/publish | Explicit user action and policy grant | Intentional confirmation |
|
|
1097
|
+
| Operator spend anomaly | Pause new admissions or downgrade capacity before provider spend escapes | Usually invisible; visible only if user action is blocked |
|
|
1098
|
+
|
|
1099
|
+
Required cost-control layers:
|
|
1100
|
+
|
|
1101
|
+
- Admission control: every cost-bearing action must check plan, grant, account
|
|
1102
|
+
quota, goal budget, active reservations, concurrency, kill switches, and abuse
|
|
1103
|
+
state before contacting E2B or Browser Run.
|
|
1104
|
+
- Reservation before spend: browser, computer, preview, Shelf storage, and
|
|
1105
|
+
hosted goal work must reserve capacity before dispatch and settle against
|
|
1106
|
+
actual usage afterward.
|
|
1107
|
+
- Atomic goal accounting: Goal Durable Objects own hot goal-budget reservations
|
|
1108
|
+
and terminal-state blocking; D1 remains the account/reporting read model.
|
|
1109
|
+
- Queue and concurrency gates: use hosted queues, per-account active job caps,
|
|
1110
|
+
and fair scheduling so one account cannot consume shared provider capacity.
|
|
1111
|
+
- Lifecycle savings: Creator/disposable computers kill by default; Pro Saved
|
|
1112
|
+
Computers auto-pause after 10 minutes idle; active Pro Goal Runs renew
|
|
1113
|
+
progress leases and pause on stall/limit rather than burn indefinitely.
|
|
1114
|
+
- Provider ceiling handling: E2B continuous-runtime limits must be treated as a
|
|
1115
|
+
lifecycle boundary. Long goals checkpoint and pause/resume or rotate before
|
|
1116
|
+
provider hard stop.
|
|
1117
|
+
- Orphan cleanup: a watchdog/DO alarm path must reconcile provider state against
|
|
1118
|
+
D1/Goal DO state. Creator/disposable provider state can be killed when the
|
|
1119
|
+
job is terminal or lease-less. Pro Saved Computers should be paused and marked
|
|
1120
|
+
for repair/reconciliation, not killed, unless an explicit delete/reset,
|
|
1121
|
+
account-lifecycle, abuse/security/legal, or unrecoverable-provider condition
|
|
1122
|
+
applies.
|
|
1123
|
+
- Preview containment: private previews are owner-scoped and time-bound;
|
|
1124
|
+
preview/public traffic cannot bypass auto-pause, quota, or share policy.
|
|
1125
|
+
- Artifact containment: automatic artifacts are bounded; arbitrary files enter
|
|
1126
|
+
Shelf only by explicit save; Shelf bytes count against storage quota.
|
|
1127
|
+
- Operator controls: global and per-provider pause switches must deny before
|
|
1128
|
+
D1 job insertion, queue dispatch, provider creation, or resume.
|
|
1129
|
+
- Spend reconciliation: internal meters must be reconciled with provider usage
|
|
1130
|
+
and surfaced to operators as capacity/spend drift, not shown to users as raw
|
|
1131
|
+
provider anxiety.
|
|
1132
|
+
|
|
1133
|
+
Auto-pause rules:
|
|
1134
|
+
|
|
1135
|
+
| Computer state | Default lifecycle |
|
|
1136
|
+
| --- | --- |
|
|
1137
|
+
| Creator Cloudflare sandbox or disposable one-shot computer completes/fails/cancels/times out | Kill provider state after required artifacts and summaries are persisted |
|
|
1138
|
+
| Pro Saved Computer goes inactive | Pause after 10 minutes using E2B lifecycle `onTimeout: "pause"` |
|
|
1139
|
+
| Pro Saved Computer is manually resumed | Resume only through `vc-tools` after entitlement/quota checks |
|
|
1140
|
+
| Pro Saved Computer receives passive/public traffic while paused | Do not auto-resume by default |
|
|
1141
|
+
| Pro Saved Computer is idle for a long period while subscription remains active | Keep paused; do not automated-kill for inactivity alone |
|
|
1142
|
+
| Active Pro Goal Run is making meaningful progress | Keep running within account, goal, concurrency, abuse, and provider-runtime limits |
|
|
1143
|
+
| Active Pro Goal Run reaches provider continuous-runtime ceiling window | Checkpoint and pause/resume or rotate safely before hard stop |
|
|
1144
|
+
| Goal runner stops producing meaningful progress | Mark paused/`needs_human`, write work receipt, and auto-pause computer |
|
|
1145
|
+
| Account/goal budget is exhausted | Stop new cost-bearing work, preserve resumable state when possible, and show the exact limit reached |
|
|
1146
|
+
| Abuse/security/operator stop triggers | Pause or kill according to severity; preserve audit/work receipt where safe |
|
|
1147
|
+
| User explicitly deletes/resets a Pro Saved Computer | Kill provider state after export/confirmation policy is satisfied |
|
|
1148
|
+
|
|
1149
|
+
Meaningful progress for hosted goal runs should include at least one of:
|
|
1150
|
+
|
|
1151
|
+
- active command/process lease owned by the runner
|
|
1152
|
+
- `vc-tools` tool call, checkpoint, artifact, file write, test result, or preview
|
|
1153
|
+
update
|
|
1154
|
+
- runner heartbeat that references the current active command or task step
|
|
1155
|
+
- explicit user interaction with the active goal or computer
|
|
1156
|
+
|
|
1157
|
+
Do not treat raw stdout alone as enough to renew an expensive long-running goal
|
|
1158
|
+
forever. Conversely, do not pause a healthy long-running command merely because
|
|
1159
|
+
it is quiet. The runner must track command/process leases separately from log
|
|
1160
|
+
volume.
|
|
1161
|
+
|
|
1162
|
+
## Usage And Packaging Direction
|
|
1163
|
+
|
|
1164
|
+
Public usage language should describe agent work capacity, not provider meters.
|
|
1165
|
+
|
|
1166
|
+
Prefer:
|
|
1167
|
+
|
|
1168
|
+
- agent browser checks
|
|
1169
|
+
- agent computer runs
|
|
1170
|
+
- test runs
|
|
1171
|
+
- concurrent jobs
|
|
1172
|
+
- artifact storage
|
|
1173
|
+
- retention
|
|
1174
|
+
- saved computers
|
|
1175
|
+
- priority queue
|
|
1176
|
+
- tool grants
|
|
1177
|
+
|
|
1178
|
+
Avoid:
|
|
1179
|
+
|
|
1180
|
+
- E2B credits
|
|
1181
|
+
- Cloudflare credits
|
|
1182
|
+
- sandbox minutes as the headline
|
|
1183
|
+
- container time
|
|
1184
|
+
- raw provider rate limits
|
|
1185
|
+
|
|
1186
|
+
Internal meters can remain precise:
|
|
1187
|
+
|
|
1188
|
+
- browser seconds
|
|
1189
|
+
- computer seconds
|
|
1190
|
+
- job count
|
|
1191
|
+
- active job count
|
|
1192
|
+
- artifact bytes
|
|
1193
|
+
- retention days
|
|
1194
|
+
- provider error/rate-limit counts
|
|
1195
|
+
- operator capacity thresholds
|
|
1196
|
+
|
|
1197
|
+
Pricing and exact plan packaging are not decided in this RFC. The current
|
|
1198
|
+
decision is product-shape only: `vc-tools` should sell and explain useful agent
|
|
1199
|
+
work, while the hosted control plane protects margins with hard caps, soft caps,
|
|
1200
|
+
queued-ahead reporting, scheduled backpressure, provider spend alarms, and
|
|
1201
|
+
plan-derived limits.
|
|
1202
|
+
|
|
1203
|
+
## First Implementation Phases
|
|
1204
|
+
|
|
1205
|
+
### Phase 0: Language And Contract Preparation
|
|
1206
|
+
|
|
1207
|
+
- Add `computer.run` and `computer.test` aliases while preserving
|
|
1208
|
+
`sandbox.run_command` and `sandbox.run_tests`.
|
|
1209
|
+
- Update CLI help, API docs, public copy, and validation matrix to prefer
|
|
1210
|
+
"computer" for the Pro user-facing primitive while keeping Creator one-shot
|
|
1211
|
+
sandbox language intact where that is still the shipped provider path.
|
|
1212
|
+
- Keep security docs explicit that the computer is an isolated sandbox.
|
|
1213
|
+
|
|
1214
|
+
### Phase 1: Provider Boundary
|
|
1215
|
+
|
|
1216
|
+
- Extract the current Cloudflare Sandbox SDK execution path behind a provider
|
|
1217
|
+
boundary.
|
|
1218
|
+
- Keep current live behavior intact while making provider choice explicit.
|
|
1219
|
+
- Preserve Creator one-shot compute on the Cloudflare sandbox provider path.
|
|
1220
|
+
- Add tests proving quota, audit, artifact, cancellation, and reconciliation
|
|
1221
|
+
remain provider-independent.
|
|
1222
|
+
|
|
1223
|
+
### Phase 2: E2B Hidden Pro Provider
|
|
1224
|
+
|
|
1225
|
+
- Add an E2B REST provider behind an operator flag such as
|
|
1226
|
+
`VC_TOOLS_COMPUTER_PROVIDER=e2b`.
|
|
1227
|
+
- Route only Pro/operator/internal canaries to E2B while Creator continues using
|
|
1228
|
+
the Cloudflare sandbox provider.
|
|
1229
|
+
- Start with Option A: direct REST from the hosted Worker to E2B lifecycle APIs
|
|
1230
|
+
and sandbox envd endpoints.
|
|
1231
|
+
- Run the required Worker spike: create a live sandbox, call an envd command
|
|
1232
|
+
endpoint such as `POST /process/start`, retrieve stdout/stderr/result, and
|
|
1233
|
+
prove file read/write from the Worker.
|
|
1234
|
+
- Treat a successful Worker REST spike as the no-extra-infra path.
|
|
1235
|
+
- Add a proxy/sidecar/Node service only if the spike proves direct Worker REST
|
|
1236
|
+
cannot safely cover lifecycle, commands, files, timeout, cancellation, and
|
|
1237
|
+
error handling.
|
|
1238
|
+
- Run internal smoke jobs only.
|
|
1239
|
+
- Store provider metadata in D1 without exposing provider tokens.
|
|
1240
|
+
- Keep the Cloudflare sandbox provider as the Creator production lane even after
|
|
1241
|
+
E2B behavior is proven for Pro.
|
|
1242
|
+
|
|
1243
|
+
### Phase 3: Pro Agent Computer
|
|
1244
|
+
|
|
1245
|
+
- Switch Pro product language from "Sandbox" to "Agent Computer".
|
|
1246
|
+
- Keep Creator product language and implementation tied to bounded one-shot
|
|
1247
|
+
sandbox/compute unless a separate Creator release changes that surface.
|
|
1248
|
+
- Keep compatibility aliases for `sandbox.*`.
|
|
1249
|
+
- Use Browser Run as the verification partner for web-preview computer jobs.
|
|
1250
|
+
- Add private owner-scoped Computer Preview for services running inside the
|
|
1251
|
+
Agent Computer.
|
|
1252
|
+
- Keep public preview links and publish/deploy behind explicit user action and
|
|
1253
|
+
future policy-controlled grants.
|
|
1254
|
+
- Add the zero-code setup path: `vc-tools login`, `vc-tools computer start`,
|
|
1255
|
+
guided computer setup, and generated config.
|
|
1256
|
+
- Add provider connection status surfaces without exposing raw provider secrets.
|
|
1257
|
+
- Enable public outbound internet for Pro E2B-backed Agent Computers while
|
|
1258
|
+
preserving Browser Run as the browser product.
|
|
1259
|
+
- Block private/internal/metadata reach, public inbound exposure, provider
|
|
1260
|
+
secrets, Vibecodr internal infrastructure, and abuse patterns unless an
|
|
1261
|
+
explicit future grant opens a narrow lane.
|
|
1262
|
+
|
|
1263
|
+
### Phase 4: Saved Computers
|
|
1264
|
+
|
|
1265
|
+
- Introduce pause/resume or snapshot-backed saved computers only after one-shot
|
|
1266
|
+
jobs are stable.
|
|
1267
|
+
- Add Pro-only persistence with one primary account-attached Saved Computer by
|
|
1268
|
+
default. Additional Saved/project/scratch computers are explicit future
|
|
1269
|
+
packaging decisions.
|
|
1270
|
+
- Create/resume Pro Saved Computers with a 10-minute timeout and
|
|
1271
|
+
`onTimeout: "pause"` so idle computers sleep rather than disappear.
|
|
1272
|
+
- Keep auto-resume disabled by default unless a later policy explicitly allows
|
|
1273
|
+
waking on traffic/activity without a `vc-tools` resume action.
|
|
1274
|
+
- Add user-facing last-used and sleeping/running/error status.
|
|
1275
|
+
- Add explicit delete/reset/export flows before provider-held Pro computer state
|
|
1276
|
+
can be killed.
|
|
1277
|
+
- Add orphan reconciliation: if Cloudflare state says a computer is idle,
|
|
1278
|
+
terminal, or lease-less while E2B still reports it running, pause Pro Saved
|
|
1279
|
+
Computers and mark them for repair/reconciliation; kill only disposable or
|
|
1280
|
+
explicit-delete provider state.
|
|
1281
|
+
|
|
1282
|
+
### Goals Track: Continuation-Capable Runner First
|
|
1283
|
+
|
|
1284
|
+
Goals are a cross-cutting product track, not part of the initial E2B provider
|
|
1285
|
+
swap. The tracking protocol is implementation substrate, not a finished phase.
|
|
1286
|
+
Do not ship or market Goals until at least one supported runner can keep working
|
|
1287
|
+
after the agent would otherwise stop.
|
|
1288
|
+
|
|
1289
|
+
Goal substrate:
|
|
1290
|
+
|
|
1291
|
+
- Add Goal Durable Object and D1 read-model schema.
|
|
1292
|
+
- Add `goals.create`, `goals.get`, `goals.checkpoint`, and `goals.complete`.
|
|
1293
|
+
- Add `goal_id` to hosted job submission and job readback.
|
|
1294
|
+
- Add goal budget reservation before provider execution when `goal_id` is
|
|
1295
|
+
present.
|
|
1296
|
+
- Link jobs and artifacts to goals.
|
|
1297
|
+
- Add a dashboard/status surface for objective, status, budget burn,
|
|
1298
|
+
checkpoints, jobs, and artifacts.
|
|
1299
|
+
- Add tests for terminal-state blocking, budget exhaustion, concurrent
|
|
1300
|
+
reservations, checkpoint append, artifact linking, and D1 read-model sync.
|
|
1301
|
+
- Add tests for expired work leases, idle auto-pause, stalled-goal pause,
|
|
1302
|
+
provider-runtime checkpoint/rotate, and account-limit enforcement.
|
|
1303
|
+
|
|
1304
|
+
Hosted continuation runner:
|
|
1305
|
+
|
|
1306
|
+
- Wait until E2B-backed Agent Computers and Pro Saved Computers are
|
|
1307
|
+
production-ready.
|
|
1308
|
+
- Ship hosted goal runs as Pro-only.
|
|
1309
|
+
- Add a hosted runner template/profile inside an Agent Computer so users do not
|
|
1310
|
+
manually install or configure the runner.
|
|
1311
|
+
- Require provider connection through the guided setup flow before the first
|
|
1312
|
+
hosted goal run when the chosen runner needs a user-owned provider account.
|
|
1313
|
+
- Mint a scoped `vc-tools` grant for the runner.
|
|
1314
|
+
- Boot the runner with the objective, goal id, budget, and continuation
|
|
1315
|
+
contract.
|
|
1316
|
+
- Keep goal state, quota, artifacts, and provider lifecycle under the hosted
|
|
1317
|
+
`vc-tools` control plane.
|
|
1318
|
+
- Do not enforce a short wall-clock cap while the runner is actively making
|
|
1319
|
+
meaningful progress.
|
|
1320
|
+
- Enforce account entitlement, goal budget, concurrency, provider spend controls,
|
|
1321
|
+
abuse controls, and explicit user/operator stop actions.
|
|
1322
|
+
- Require the hosted runner to renew a Goal DO work lease while active. Lease
|
|
1323
|
+
renewal must be tied to meaningful progress or an active command/process lease,
|
|
1324
|
+
not log spam.
|
|
1325
|
+
- Track provider continuous-runtime ceilings and make checkpoint/pause/resume or
|
|
1326
|
+
computer rotation part of the runner contract before the provider can hard-stop
|
|
1327
|
+
useful work.
|
|
1328
|
+
- Use Pro Saved Computer auto-pause after 10 minutes only after idle/finished/
|
|
1329
|
+
stalled/paused/limited work, while keeping active hosted goal runs alive during
|
|
1330
|
+
meaningful progress.
|
|
1331
|
+
|
|
1332
|
+
Later local continuation runner:
|
|
1333
|
+
|
|
1334
|
+
- Add `vc-tools goal run "..." -- <agent command>` as a supervised runner, not a
|
|
1335
|
+
local browser/computer execution path.
|
|
1336
|
+
- Mint a scoped goal-bound grant and inject goal context into the child process.
|
|
1337
|
+
- Relaunch, resume, or reprompt the child while the Goal DO says the goal is
|
|
1338
|
+
active and each iteration produces meaningful progress.
|
|
1339
|
+
- Stop with a clear state when the goal is complete, budget-limited, paused,
|
|
1340
|
+
abandoned, blocked, or progress stalls.
|
|
1341
|
+
- Prove at least one named adapter before treating the local runner as
|
|
1342
|
+
product-grade: Claude Code via supported hook/plugin or prompt loop, Codex via
|
|
1343
|
+
supported non-interactive/resume surfaces, or another harness with equivalent
|
|
1344
|
+
lifecycle hooks.
|
|
1345
|
+
- Keep MCP-only `goals.*` as compatibility mode and internal plumbing. It should
|
|
1346
|
+
not be called a phase.
|
|
1347
|
+
|
|
1348
|
+
## Open Questions
|
|
1349
|
+
|
|
1350
|
+
- Should the public binary remain only `vc-tools`, or should there eventually be
|
|
1351
|
+
top-level command aliases such as `vc-tools computer run` in addition to
|
|
1352
|
+
`vc-tools tools test computer.run`?
|
|
1353
|
+
- How many additional Saved/project/scratch computers should Pro or Team plans
|
|
1354
|
+
include beyond the primary account-attached Pro Saved Computer?
|
|
1355
|
+
- Which provider connection flow ships first, and can it be completed without
|
|
1356
|
+
raw API keys, hand-written config, or code knowledge?
|
|
1357
|
+
- What provider session state belongs inside the Saved Computer versus an
|
|
1358
|
+
encrypted provider vault versus Cloudflare metadata?
|
|
1359
|
+
- Should private Computer Preview be routed through a `vc-tools` preview proxy,
|
|
1360
|
+
a provider token-gated URL, or both depending on environment?
|
|
1361
|
+
- What is the first public-preview/share policy, and how long should shared
|
|
1362
|
+
preview links live by default?
|
|
1363
|
+
- What exact egress controls, denylist categories, provider settings, and
|
|
1364
|
+
abuse-detection hooks are needed to make Pro E2B Agent Computer public
|
|
1365
|
+
outbound internet safe without making the computer feel fake?
|
|
1366
|
+
- How should MCP tools inside the E2B computer be exposed without leaking
|
|
1367
|
+
gateway tokens or confusing them with the hosted `vc-tools` remote MCP?
|
|
1368
|
+
- Which agent runner should ship first inside the Pro hosted E2B Goal Runner:
|
|
1369
|
+
Codex, Claude Code, a custom runner, or a narrow vc-tools-owned harness?
|
|
1370
|
+
- Which local agent CLIs should receive later first-class adapters, and what
|
|
1371
|
+
exact Stop hooks, resume commands, session APIs, MCP config injection points,
|
|
1372
|
+
and structured-output surfaces do they support?
|
|
1373
|
+
- Which Vibecodr product surfaces, if any, should call `vc-tools` first after
|
|
1374
|
+
the standalone toolkit is stable?
|
|
1375
|
+
|
|
1376
|
+
## Source Links
|
|
1377
|
+
|
|
1378
|
+
- E2B documentation: https://e2b.dev/docs
|
|
1379
|
+
- E2B sandbox lifecycle: https://e2b.dev/docs/sandbox
|
|
1380
|
+
- E2B persistence: https://e2b.dev/docs/sandbox/persistence
|
|
1381
|
+
- E2B snapshots: https://e2b.dev/docs/sandbox/snapshots
|
|
1382
|
+
- E2B auto-resume: https://e2b.dev/docs/sandbox/auto-resume
|
|
1383
|
+
- E2B internet access and sandbox URLs: https://e2b.dev/docs/sandbox/internet-access
|
|
1384
|
+
- E2B computer use / desktop: https://e2b.dev/docs/use-cases/computer-use
|
|
1385
|
+
- E2B user and workdir: https://e2b.dev/docs/template/user-and-workdir
|
|
1386
|
+
- E2B create sandbox API: https://e2b.dev/docs/api-reference/sandboxes/create-sandbox
|
|
1387
|
+
- E2B Worker/Edge runtime caveat: https://e2b-preview.mintlify.app/troubleshooting/sdks/workers-edge-runtime
|
|
1388
|
+
- Cloudflare Durable Object alarms: https://developers.cloudflare.com/durable-objects/api/alarms/
|
|
1389
|
+
- Cloudflare Queues: https://developers.cloudflare.com/queues/
|
|
1390
|
+
- MCP Sampling: https://modelcontextprotocol.io/specification/draft/client/sampling
|
|
1391
|
+
- MCP Elicitation: https://modelcontextprotocol.io/specification/draft/client/elicitation
|
|
1392
|
+
- MCP server-to-client request association: https://modelcontextprotocol.io/seps/2260-Require-Server-requests
|
|
1393
|
+
- Cloudflare Browser Run: https://developers.cloudflare.com/browser-run/
|
|
1394
|
+
- Existing `vc-tools` API contract: `docs/API-CONTRACT.md`
|
|
1395
|
+
- Existing Cloudflare primitive-fit document: `docs/CLOUDFLARE-PRIMITIVE-FIT.md`
|