aixyz dev
Start a local development server with hot reload:
aixyz dev # port 3000
aixyz dev -p 4000 # custom port
The dev command:
- Spawns a Bun worker process serving your agent
- Watches
app/ and aixyz.config.ts for file changes (100ms debounce)
- Auto-generates a server from
app/agent.ts + app/tools/ unless app/server.ts exists
- Serves on
http://localhost:3000 by default
Changes to files in app/tools/ are picked up automatically — no need to restart manually.
aixyz build
Bundle your agent for production deployment:
Build Pipeline
- Validates config from
aixyz.config.ts via @aixyz/config (baked into bundle)
- Runs Bun build plugins:
AixyzConfigPlugin — Materializes resolved config into the bundle, replacing aixyz/config imports
AixyzServerPlugin — Auto-generates server.ts from app/ structure if no app/server.ts exists
- Bundles with
Bun.build() targeting Bun Runtime
- Copies
public/ and app/icon.png as static assets
| Format | Flag | Output Path | Description |
|---|
| Standalone | (default) | .aixyz/output/server.js | Single-file bundle, run with bun |
| Vercel | VERCEL=1 or --output vercel | .vercel/output/ | Build Output API v3 for serverless |
Standalone:
aixyz build
bun .aixyz/output/server.js
Vercel:
aixyz build --output vercel
The VERCEL=1 environment variable is automatically set by Vercel during builds, so the correct mode is selected automatically on Vercel.
agently-cli register
Register an agent on the ERC-8004 IdentityRegistry:
agently-cli register --chain base-sepolia --broadcast
| Flag | Description |
|---|
--uri | Metadata URI or local JSON file path |
--chain | mainnet, sepolia, base-sepolia, localhost |
--rpc-url | Custom RPC endpoint |
--keystore | Encrypted keystore file |
--browser | Use browser wallet (EIP-6963) |
--broadcast | Send transaction (default is dry-run) |
agently-cli set-agent-uri
Update the metadata URI for a registered agent:
agently-cli set-agent-uri \
--agent-id 1 \
--uri "https://my-agent.vercel.app/.well-known/agent-card.json" \
--broadcast