{"id":46069678,"url":"https://github.com/agentserver/agentserver","last_synced_at":"2026-05-20T04:03:25.333Z","repository":{"id":340814390,"uuid":"1167662303","full_name":"agentserver/agentserver","owner":"agentserver","description":"Run OpenClaw and OpenCode in the browser. Self-hosted, multi-user, Helm-deployable.","archived":false,"fork":false,"pushed_at":"2026-05-02T06:55:45.000Z","size":2962,"stargazers_count":22,"open_issues_count":7,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-02T07:26:19.499Z","etag":null,"topics":["ai","claude","code-server","docker","helm","kubernetes","oidc","openclaw","self-hosted","terminal"],"latest_commit_sha":null,"homepage":"https://agentserver.dev","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agentserver.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-26T14:45:27.000Z","updated_at":"2026-05-02T06:55:44.000Z","dependencies_parsed_at":"2026-03-01T09:02:41.542Z","dependency_job_id":null,"html_url":"https://github.com/agentserver/agentserver","commit_stats":null,"previous_names":["cli-server/cli-server"],"tags_count":93,"template":false,"template_full_name":null,"purl":"pkg:github/agentserver/agentserver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentserver%2Fagentserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentserver%2Fagentserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentserver%2Fagentserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentserver%2Fagentserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agentserver","download_url":"https://codeload.github.com/agentserver/agentserver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agentserver%2Fagentserver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32527139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","claude","code-server","docker","helm","kubernetes","oidc","openclaw","self-hosted","terminal"],"created_at":"2026-03-01T13:04:52.185Z","updated_at":"2026-05-16T07:22:12.742Z","avatar_url":"https://github.com/agentserver.png","language":"Go","funding_links":[],"categories":["Skills \u0026 Plugins"],"sub_categories":["Setup Guides \u0026 Starters"],"readme":"\u003ch1 align=\"center\"\u003eagentserver\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003ePersonally command and deploy AI agents across every location and device — from one place.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://platform.agentserver.dev\"\u003e\u003cimg src=\"https://img.shields.io/badge/Try%20Now-platform.agentserver.dev-blue?style=for-the-badge\" alt=\"Try Now\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/agentserver/agentserver/actions\"\u003e\u003cimg src=\"https://github.com/agentserver/agentserver/actions/workflows/build.yml/badge.svg\" alt=\"Build\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/agentserver/agentserver/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/agentserver/agentserver\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/agentserver/agentserver/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/agentserver/agentserver\" alt=\"Release\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshot-1.png\" alt=\"agentserver Web UI\" width=\"800\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/screenshot-2.png\" alt=\"agentserver Coding Agent\" width=\"800\"\u003e\n\u003c/p\u003e\n\n\u003e 📖 Read the full vision: [Overview of agentserver](Overview%20of%20agentserver.pdf) (slide deck, Apr 2026)\n\nagentserver is a self-hosted platform for **operating a fleet of coding agents from one console** — cloud sandboxes, your laptop, your desktop, even your phone, all reachable through the same Web UI or an IM channel (WeChat / Weixin, Telegram, …).\n\nIt is the answer to a question Addy Osmani frames as the path from L1 (no AI) to L8 (build your own orchestrator)*: once you are juggling 10+ agents across machines, you stop being a *conductor* and become an *orchestrator*. agentserver is the orchestration layer.\n\n\u003csub\u003e* Addy Osmani, Director, Google · Gemini \u0026 Cloud AI — \u003ca href=\"https://talks.addy.ie/oreilly-codecon-march-2026\"\u003etalks.addy.ie/oreilly-codecon-march-2026\u003c/a\u003e\u003c/sub\u003e\n\n### How it differs from what already exists\n\n| Tool | Local agents | Cloud sandboxes | Cross-device peering |\n|------|:---:|:---:|:---:|\n| OpenClaw / Claude Code Remote | one at a time | — | — |\n| Claude Code on the web | — | ✅ | — |\n| Claude Code Agent Teams | — | ✅ (subagents) | — |\n| **agentserver** | **✅ many** | **✅** | **✅** |\n\n## Why agentserver?\n\n- **One console, every device** — Operate cloud sandboxes, local laptops/desktops, and IM-bound agents from the same workspace.\n- **Local tunneling, zero public IP** — A local opencode/Claude Code/Codex instance dials home over WebSocket and appears as a sandbox in the UI.\n- **Sandboxes** — Per-task containers with pause/resume and idle auto-pause; Docker (single node) or Kubernetes with [Agent Sandbox](https://github.com/kubernetes-sigs/agent-sandbox) + gVisor.\n- **Multi-tenancy by workspace** — Cloud and local agents register into the *same* workspace registry; role-based access (owner / maintainer / developer / guest).\n- **Credential \u0026 LLM proxy** — Sandboxes never see real provider keys; per-workspace RPD quotas and usage tracking enforced server-side.\n- **IM bridge (WIP)** — Drive agents from WeChat / Weixin or Telegram via `imbridge`; no terminal required.\n- **SSO ready** — GitHub OAuth and generic OIDC (Keycloak, Authentik, …).\n- **Deploy anywhere** — Pre-built binaries, Homebrew, Docker Compose, or Helm for Kubernetes.\n\n## Roadmap: Three Stages\n\nagentserver is being built in three stages. The diagrams and full reasoning live in [Overview of agentserver.pdf](Overview%20of%20agentserver.pdf).\n\n| Stage | Theme | Status | What lands |\n|-------|-------|:---:|------------|\n| **1** | `code-server` for coding agents | ✅ shipping | Sandbox provisioner, agent registry, credential / LLM proxy, agent-proxy ingress, Web Console |\n| **2** | The emergence of OpenClaw | 🚧 in progress | NanoClaw (sandboxed Claude Code), `imbridge` (WeChat / Telegram), agent message bus |\n| **3** | Centralized agent-loop | 🔭 designing | Stateless `cc` worker pool, `cc-broker` provisioner, tool router, durable memory / context store, agent mailboxes |\n\n### Core insights driving Stage 3\n\n- **Stateless harness** — Decouple the *brain* (Claude + harness) from the *hands* (sandboxes and tools). Sessions are append-only event logs that live outside the context window. Workers are *cattle, not pets* — a worker that dies mid-turn loses nothing.\n- **Hybrid cloud-local mesh** — Cloud and local agents share one workspace registry. Discovery happens through agent cards; the LLM picks a tool and a tool router decides where the call goes. *Agent discovery, not network mesh.*\n- **Async collaboration via mailboxes** — Agents hand off work through inboxes in durable storage. The receiver does not need to be alive when the message is sent. The mailbox is the source of truth.\n\n## Architecture\n\nToday's deployment (Stage 1, with Stage 2 services landing):\n\n```\n                  World (Anthropic, GitHub, …)\n                          ▲\n                          │ egress\n              ┌───────────┴────────────┐\n              │  credentialproxy /     │\n              │  llmproxy (:8081)      │\n              │  • key injection       │\n              │  • RPD quota / usage   │\n              └───────────┬────────────┘\n                          │\nWeChat / Telegram ──▶ imbridge ──▶ ┐\nBrowser ───────────▶ agentserver  ─┤    ┌──────────────────┐\n                     (:8080)       │    │ sandbox pod /    │\n                     • REST API    ├───▶│ container        │\n                     • admin UI    │    │ └─ opencode /    │\n                     • registry    │    │    nanoclaw      │\n                     • tunnels     │    └──────────────────┘\n                          │        │\n                          │        └──▶ local laptop / desktop / phone\n                          │              └─ agentserver-agent (WS tunnel)\n                          ▼\n                     PostgreSQL\n                  (users, workspaces,\n                   sandboxes, quotas,\n                   sessions, mailboxes)\n\nBrowser ──▶ sandboxproxy (:8082) ─▶ subdomain routing to sandbox services\nBrowser ──▶ cc-broker          ───▶ stateless cc worker pool (Stage 3)\nSandbox ──▶ executor-registry  ───▶ tool-call dispatch / executor lookup\n```\n\n| Service | Default Port | Role |\n|---------|-------------|------|\n| **agentserver** | `:8080` | Main API, Web UI, agent registry, tunnel endpoints |\n| **llmproxy** | `:8081` | LLM API proxy with per-workspace rate limiting and usage tracking |\n| **sandboxproxy** | `:8082` | Subdomain-based routing to sandbox services |\n| **credentialproxy** | — | Server-side injection of provider credentials |\n| **imbridge** | — | IM channel bridge (WeChat / Weixin, Telegram) |\n| **cc-broker** | — | Stateless Claude Code / Codex worker pool (Stage 3) |\n| **executor-registry** | — | Tool-call dispatch / executor discovery (Stage 3) |\n\n## Code of Conduct\n\nagentserver follows four house rules that shape every change:\n\n- ❌ **No human-authored code.** All production code is generated by AI agents.\n- ✅ **Open source from day 1.** The repository is public from inception; no closed-source phase.\n- ✅ **Fully automated DevOps.** Build, test, release, and deployment are end-to-end automated.\n- ✅ **Dogfooding \u0026 bootstrapping.** agentserver is built (partially) *with* agentserver — every feature is used by our own agents before it ships.\n\n## Quick Start\n\n### Docker Compose (recommended for local use)\n\n```bash\ngit clone https://github.com/agentserver/agentserver.git \u0026\u0026 cd agentserver\ndocker build -f Dockerfile.opencode -t agentserver-agent:latest .\nexport ANTHROPIC_API_KEY=\"sk-ant-...\"\ndocker compose up -d\n```\n\nOpen `http://localhost:8080` in your browser.\n\n### Helm (Kubernetes)\n\n```bash\nhelm install agentserver oci://ghcr.io/agentserver/charts/agentserver \\\n  --namespace agentserver --create-namespace \\\n  --set database.url=\"postgres://user:pass@postgres:5432/agentserver?sslmode=disable\" \\\n  --set anthropicApiKey=\"sk-ant-...\" \\\n  --set ingress.enabled=true \\\n  --set ingress.host=\"cli.example.com\" \\\n  --set baseDomain=\"cli.example.com\"\n```\n\n### Pre-built Binaries\n\nDownload from [GitHub Releases](https://github.com/agentserver/agentserver/releases), or install via Homebrew:\n\n```bash\nbrew install agentserver/tap/agentserver\n```\n\n## Local Agent Tunneling\n\nConnect a locally-running opencode instance to agentserver — no public IP or third-party tunnel needed.\n\n1. In the Web UI, click the laptop icon next to \"Sandboxes\" to generate a registration code.\n\n2. On your local machine:\n\n```bash\n# First time — register with the server\nagentserver connect \\\n  --server https://cli.example.com \\\n  --code \u003cregistration-code\u003e \\\n  --name \"My MacBook\"\n\n# Subsequent runs — auto-reconnect using saved credentials\nagentserver connect\n```\n\n3. A **local** sandbox appears in the Web UI — click \"Open\" to access your local opencode through the browser.\n\n### Multi-agent support\n\nRegister multiple agents on the same machine, each targeting a different directory and workspace:\n\n```bash\n# List all registered agents\nagentserver list\n\n# Remove a registration\nagentserver remove --workspace \u003cworkspace-id\u003e\n```\n\nAgent credentials are stored in `~/.agentserver/registry.json`.\n\n**Tunnel features:** zero-config networking, auto-reconnect with backoff, binary WebSocket protocol (no base64 overhead), real-time SSE streaming, offline detection with auto-recovery.\n\n## Configuration\n\nSee the [API reference](docs/api-reference.md) for full endpoint documentation.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHelm Values\u003c/strong\u003e\u003c/summary\u003e\n\n| Parameter | Description | Default |\n|-----------|-------------|---------|\n| `image.repository` | Server image | `ghcr.io/agentserver/agentserver` |\n| `image.tag` | Server image tag | `latest` |\n| `opencode.image` | Opencode agent image for sandbox pods | `ghcr.io/agentserver/opencode-agent:latest` |\n| `opencode.runtimeClassName` | RuntimeClass for sandbox pods (e.g. `gvisor`) | `\"\"` |\n| `openclaw.image` | OpenClaw gateway image | `\"\"` |\n| `openclaw.port` | OpenClaw gateway port | `18789` |\n| `database.url` | PostgreSQL connection string | (required) |\n| `anthropicApiKey` | Anthropic API key | (required) |\n| `anthropicBaseUrl` | Custom Anthropic API base URL | `\"\"` |\n| `anthropicAuthToken` | Anthropic auth token (alternative to API key) | `\"\"` |\n| `backend` | Sandbox backend: `docker` or `k8s` | `docker` |\n| `baseDomain` | Base domain for subdomain routing | `\"\"` |\n| `baseScheme` | URL scheme for generated URLs | `https` |\n| `idleTimeout` | Auto-pause idle sandboxes after | `30m` |\n| `persistence.sessionStorageSize` | Per-sandbox ephemeral storage | `5Gi` |\n| `persistence.userDriveSize` | Per-workspace shared disk size | `10Gi` |\n| `persistence.storageClassName` | Storage class for PVCs | `\"\"` (cluster default) |\n| `workspace.resources` | Resource limits/requests for sandbox pods | `1Gi/1cpu` limits |\n| `agentSandbox.install` | Install Agent Sandbox controller | `true` |\n| `ingress.enabled` | Enable Nginx Ingress | `false` |\n| `ingress.host` | Ingress hostname | `agentserver.example.com` |\n| `ingress.tls` | Enable TLS (cert-manager) | `false` |\n| `gateway.enabled` | Enable Gateway API HTTPRoute | `false` |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eEnvironment Variables (Main Server)\u003c/strong\u003e\u003c/summary\u003e\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `DATABASE_URL` | PostgreSQL connection string | (required) |\n| `ANTHROPIC_API_KEY` | Anthropic API key | (required) |\n| `ANTHROPIC_BASE_URL` | Custom API base URL | `https://api.anthropic.com` |\n| `ANTHROPIC_AUTH_TOKEN` | Anthropic auth token (alternative to API key) | - |\n| `OPENCODE_CONFIG_CONTENT` | JSON opencode config for sandbox pods | - |\n| `BASE_DOMAIN` | Base domain for subdomain routing | - |\n| `BASE_SCHEME` | URL scheme (`http` or `https`) | `https` |\n| `IDLE_TIMEOUT` | Auto-pause timeout (e.g. `30m`) | `30m` |\n| `AGENT_IMAGE` | Container image for sandbox agents | `ghcr.io/agentserver/opencode-agent:latest` |\n| `LLMPROXY_URL` | Base URL of the LLM proxy service | - |\n| `PASSWORD_AUTH_ENABLED` | Enable password-based auth | `true` |\n| `OIDC_REDIRECT_BASE_URL` | External URL for OIDC callbacks | - |\n| `GITHUB_CLIENT_ID` | GitHub OAuth client ID | - |\n| `GITHUB_CLIENT_SECRET` | GitHub OAuth client secret | - |\n| `OIDC_ISSUER_URL` | Generic OIDC issuer URL | - |\n| `OIDC_CLIENT_ID` | Generic OIDC client ID | - |\n| `OIDC_CLIENT_SECRET` | Generic OIDC client secret | - |\n| `SANDBOX_NAMESPACE_PREFIX` | K8s namespace prefix | `agent-ws` |\n| `NETWORKPOLICY_ENABLED` | Enable K8s NetworkPolicy isolation | `false` |\n| `NETWORKPOLICY_DENY_CIDRS` | CIDRs to deny in network policies | - |\n| `AGENTSERVER_NAMESPACE` | agentserver's own K8s namespace | - |\n| `STORAGE_CLASS` | K8s storage class for PVCs | (cluster default) |\n| `USER_DRIVE_SIZE` | Per-workspace storage size | `10Gi` |\n| `USER_DRIVE_STORAGE_CLASS` | Storage class for workspace drives | inherits `STORAGE_CLASS` |\n| `CC_BROKER_URL` | URL of the cc-broker service (required for TUI flow) | - |\n| `EXECUTOR_REGISTRY_URL` | URL of the executor-registry service (required for TUI flow) | - |\n| `INTERNAL_API_SECRET` | Shared secret for internal endpoints (recommended) | - |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eEnvironment Variables (LLM Proxy)\u003c/strong\u003e\u003c/summary\u003e\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `LLMPROXY_LISTEN_ADDR` | HTTP listen address | `:8081` |\n| `LLMPROXY_DATABASE_URL` | Proxy's own PostgreSQL connection URL | - |\n| `LLMPROXY_AGENTSERVER_URL` | agentserver internal API URL for token validation | (required) |\n| `ANTHROPIC_API_KEY` | Anthropic API key | (required*) |\n| `ANTHROPIC_AUTH_TOKEN` | Anthropic auth token (alternative to API key) | (required*) |\n| `ANTHROPIC_BASE_URL` | Upstream Anthropic API URL | `https://api.anthropic.com` |\n| `LLMPROXY_DEFAULT_MAX_RPD` | Default max requests per day per workspace (0 = unlimited) | `0` |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eEnvironment Variables (Sandbox Proxy)\u003c/strong\u003e\u003c/summary\u003e\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `DATABASE_URL` | PostgreSQL connection string | (required) |\n| `LISTEN_ADDR` | HTTP listen address | `:8082` |\n| `BASE_DOMAIN` | Base domain for subdomain routing | (required) |\n| `OPENCODE_SUBDOMAIN_PREFIX` | Subdomain prefix for opencode sandboxes | `code` |\n| `OPENCLAW_SUBDOMAIN_PREFIX` | Subdomain prefix for openclaw sandboxes | `claw` |\n| `OPENCODE_ASSET_DOMAIN` | Domain for opencode static assets | `opencodeapp.{BASE_DOMAIN}` |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eOIDC Authentication\u003c/strong\u003e\u003c/summary\u003e\n\n**GitHub OAuth:**\n\n```bash\nhelm upgrade agentserver oci://ghcr.io/agentserver/charts/agentserver \\\n  --reuse-values \\\n  --set oidc.redirectBaseUrl=\"https://cli.example.com\" \\\n  --set oidc.github.enabled=true \\\n  --set oidc.github.clientId=\"your-client-id\" \\\n  --set oidc.github.clientSecret=\"your-client-secret\"\n```\n\nCallback URL: `https://cli.example.com/api/auth/oidc/github/callback`\n\n**Generic OIDC (Keycloak, Authentik, etc.):**\n\n```bash\nhelm upgrade agentserver oci://ghcr.io/agentserver/charts/agentserver \\\n  --reuse-values \\\n  --set oidc.redirectBaseUrl=\"https://cli.example.com\" \\\n  --set oidc.generic.enabled=true \\\n  --set oidc.generic.issuerUrl=\"https://idp.example.com/realms/main\" \\\n  --set oidc.generic.clientId=\"agentserver\" \\\n  --set oidc.generic.clientSecret=\"your-secret\"\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eKubernetes Backend\u003c/strong\u003e\u003c/summary\u003e\n\nFor production multi-tenant deployments with gVisor isolation:\n\n```bash\nhelm upgrade agentserver oci://ghcr.io/agentserver/charts/agentserver \\\n  --reuse-values \\\n  --set backend=k8s \\\n  --set opencode.runtimeClassName=gvisor \\\n  --set sandbox.namespace=agentserver\n```\n\n\u003c/details\u003e\n\n## Building from Source\n\n```bash\n# Prerequisites: Go 1.26, Node.js, pnpm, bun\n\n# Build everything (frontend + backend)\nmake build\n\n# Build individual components\nmake backend          # Go binary → bin/agentserver\nmake frontend         # React frontend → web/dist/\nmake agent            # Local agent binary → bin/agentserver-agent\nmake agent-all        # Agent for all platforms (linux/darwin/windows, amd64/arm64)\nmake llmproxy         # LLM proxy binary → bin/llmproxy\n\n# Docker images\nmake docker           # Main server image\nmake docker-agent     # Agent container image\nmake docker-llmproxy  # LLM proxy image\nmake docker-all       # All images\n```\n\n## Contributing\n\n```bash\n# Terminal 1: Start backend\ngo run . serve --db-url \"postgres://...\" --backend docker\n\n# Terminal 2: Start frontend dev server\ncd web \u0026\u0026 pnpm install \u0026\u0026 pnpm dev\n```\n\nPer the [Code of Conduct](#code-of-conduct), production code is AI-generated. Pull requests authored by an agent (with a human reviewer) are welcome; the repo is dogfooded against itself.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagentserver%2Fagentserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagentserver%2Fagentserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagentserver%2Fagentserver/lists"}