| Package | npm |
|---|---|
@agent-workspace/sdk |
Agent Workspace is a monorepo for a sandboxed developer environment platform built around a compute-storage separation model:
- SDK (
@agent-workspace/sdk) for programmatic usage - API service for workspace lifecycle, file/tool proxying, and key management
- Agent process running in VM sandboxes
- Dashboard (Next.js) for organization/workspace administration
packages/
sdk/ TypeScript SDK
api/ Hono API service
agent/ In-VM agent server
dashboard/ Next.js management UI
infra/
fly/ Fly.io machine and VM image tooling
storage/ S3 provisioning helpers
supabase/
migrations/ DB schema migrations and RLS policies
examples/ SDK and agent usage examples
- Node.js 18+
- pnpm 9+
pnpm installpnpm build
pnpm typecheck
pnpm test
pnpm dev- CI:
.github/workflows/ci.yml- Runs on PRs and pushes to
main - Installs dependencies, then runs build/typecheck/test
- Runs on PRs and pushes to
- Deploy:
.github/workflows/deploy.yml- Runs on pushes to
mainand manual dispatch - Verifies build/tests before deployment
- Deploys API to Fly.io and dashboard to Vercel when required secrets are present
- Runs on pushes to
- Release:
.github/workflows/release.yml- Runs on pushes to
mainand manual dispatch - Uses Changesets to create/update release PRs
- Publishes SDK to npm when release changes are ready
- Runs on pushes to
For workflows to fully operate, configure:
NPM_TOKEN(SDK publish)FLY_API_TOKEN(API deployment)VERCEL_TOKEN,VERCEL_ORG_ID,VERCEL_PROJECT_ID(dashboard deployment)
This repository uses Changesets as the canonical publish path.
pnpm changeset- Select the package(s) impacted
- Choose semver bump type
- Write a short human-readable summary
- Commit the generated file under
.changeset/ - Open PR and merge
On main, release.yml will:
- Create or update a release PR with version/changelog updates when unpublished changesets exist.
- Publish to npm (SDK) once release changes are merged and publishable.
You can generate version bumps locally with:
pnpm version-packages(Release automation in GitHub Actions is still the source of truth for publish.)
Create a local env file from the template:
copy packages\api\.env.example packages\api\.envSet values in packages/api/.env:
SUPABASE_URLSUPABASE_SERVICE_ROLE_KEYFLY_API_TOKENS3_BUCKETS3_ENDPOINTS3_ACCESS_KEY_IDS3_SECRET_ACCESS_KEYPORT(default3001)
Set these for local dashboard development (for example in your shell profile or local env file):
NEXT_PUBLIC_API_URL(for local API, usuallyhttp://localhost:3001)NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEY
If you are running Supabase locally:
npx supabase start
npx supabase db push- The SDK package is configured for public npm publishing (
publishConfig.access = public). - The SDK package is browser-only (ESM + Fetch API).
publish-sdk.ymlhas been intentionally removed to avoid dual publish paths.
See LICENSE.