zak-agent
v0.1.0
Published
ZAK Local Agent - Browser IDE companion daemon for terminal, filesystem, and git operations
Downloads
7
Maintainers
Readme
ZAK Agent
Local companion daemon for Governor IDE browser mode. Enables full terminal, filesystem, and git operations when using the IDE in a browser.
Quick Start
# Run directly with npx (no install needed)
npx zak-agent start
# Or install globally
npm install -g zak-agent
zak-agent startWhat It Does
ZAK Agent is a lightweight local daemon that:
- Runs on your machine - Listens on
localhost:9876by default - Enables real terminal - Execute any shell commands from the browser IDE
- Provides filesystem access - Read/write files without browser limitations
- Supports git operations - Clone, commit, push, pull repositories
- Maintains security - Only accepts localhost connections
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Browser IDE │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Editor │ │ Terminal │ │ File Explorer │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ │ │
│ WebSocket Client │
└───────────────────────────┼─────────────────────────────────┘
│ ws://localhost:9876
┌───────────────────────────┼─────────────────────────────────┐
│ ZAK Agent │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Terminal │ │ Filesystem │ │ Git │ │
│ │ Handler │ │ Handler │ │ Handler │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
Your Local Machine
(Files, Shell, Git repos)Commands
# Start the agent
zak-agent start
# Start on a different port
zak-agent start --port 9999
# Show system information
zak-agent info
# Show help
zak-agent --helpOptions
| Option | Default | Description |
|--------|---------|-------------|
| --port, -p | 9876 | Port to listen on |
| --host, -h | localhost | Host to bind to |
| --no-banner | false | Suppress startup banner |
Security
- Localhost only: The agent only accepts connections from
localhost - No remote access: Cannot be accessed from other machines
- Governor integration: All LLM operations still flow through Governor Cloud for constitutional enforcement
- No secrets stored: The agent doesn't store any credentials or API keys
Protocol
The agent uses a simple JSON-over-WebSocket protocol:
Request
{
"id": "req_1",
"type": "terminal:exec",
"payload": {
"command": "ls -la",
"cwd": "/home/user/project"
}
}Response
{
"id": "req_1",
"success": true,
"data": {
"stdout": "...",
"stderr": "",
"exitCode": 0
}
}Supported Operations
| Type | Description |
|------|-------------|
| ping | Health check |
| terminal:exec | Execute command |
| terminal:spawn | Start interactive terminal |
| terminal:write | Write to terminal |
| terminal:kill | Kill terminal |
| fs:read | Read file |
| fs:write | Write file |
| fs:readdir | List directory |
| fs:exists | Check if path exists |
| fs:mkdir | Create directory |
| fs:delete | Delete file/directory |
| fs:stat | Get file stats |
| git:clone | Clone repository |
| git:status | Get repo status |
| git:diff | Get diff |
| git:commit | Commit changes |
| git:push | Push to remote |
| git:pull | Pull from remote |
| system:info | Get system info |
| system:cwd | Get current directory |
| system:home | Get home directory |
Development
# Install dependencies
pnpm install
# Run in development mode
pnpm dev
# Build
pnpm build
# Type check
pnpm typecheckWhy Not Just Use Electron?
Electron is great for desktop apps, but:
- Browser deployment - Users can access the IDE from any browser without installing
- Dashboard integration - The IDE embeds seamlessly in the Governor Dashboard
- Lower barrier - No download required for basic usage
- Flexibility - Users choose their level of capability
The agent bridges the gap, giving browser users full capabilities when they need them.
Similar Projects
This pattern is used by:
- GitHub Codespaces (VS Code Server)
- Docker Desktop (daemon + UI)
- Cloudflare Wrangler (local dev server)
- Tauri (Rust backend + web frontend)
License
MIT
