From 323cd3a477545b0321a7c3c5d8c5227d76efc62d Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 11 May 2026 04:44:27 +0000 Subject: [PATCH 1/4] docs(brand): add org logo, wordmark, profile README, sibling README drafts, and marketing site MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce a complete AgentDispatch brand kit under brand/: - logo-mark{,-light}.svg + wordmark{,-dark}.svg: a "dispatch hub" mark (one inbound spoke, glowing core, two outbound spokes to nodes) plus horizontal wordmark lockups, for use as the org avatar and as the README hero across every repo. - profile-readme/profile/: org profile README intended for a .github repo at the org level, with shared brand assets co-located. - proposed-readmes/: drafts for each sibling repo (core, sdk-js, cli, store-sqlite, adapter-aws-agentcore, worker-agentcore, adapter-template, docs) using the same hero, navigation, and tone so the whole stack reads as one product. - website/: zero-build static site (index.html + styles.css + script.js + assets/) ready to drop into GitHub Pages, Netlify, or Cloudflare Pages. Includes OG image and SVG favicon. - README.md (mcp-server root): rewritten as the viral entry point — "give your AI assistant a fleet of cloud agents" — referencing the new wordmark and tying the package to the rest of the stack. - brand/README.md: deployment guide explaining how to publish each asset (avatar, .github repo, per-repo READMEs, site) since this session only has write access to mcp-server. --- README.md | 181 +++++++++-- brand/README.md | 145 +++++++++ brand/logo-mark-light.svg | 25 ++ brand/logo-mark.svg | 30 ++ brand/profile-readme/profile/README.md | 100 ++++++ .../profile/assets/logo-mark-light.svg | 25 ++ .../profile/assets/logo-mark.svg | 30 ++ .../profile/assets/wordmark-dark.svg | 38 +++ .../profile/assets/wordmark.svg | 41 +++ .../adapter-aws-agentcore/README.md | 65 ++++ .../adapter-template/README.md | 59 ++++ brand/proposed-readmes/cli/README.md | 59 ++++ brand/proposed-readmes/core/README.md | 86 ++++++ brand/proposed-readmes/docs/README.md | 54 ++++ brand/proposed-readmes/sdk-js/README.md | 70 +++++ brand/proposed-readmes/store-sqlite/README.md | 44 +++ .../worker-agentcore/README.md | 64 ++++ brand/website/assets/favicon.svg | 30 ++ brand/website/assets/og.svg | 56 ++++ brand/website/index.html | 281 +++++++++++++++++ brand/website/script.js | 27 ++ brand/website/styles.css | 284 ++++++++++++++++++ brand/wordmark-dark.svg | 38 +++ brand/wordmark.svg | 41 +++ 24 files changed, 1852 insertions(+), 21 deletions(-) create mode 100644 brand/README.md create mode 100644 brand/logo-mark-light.svg create mode 100644 brand/logo-mark.svg create mode 100644 brand/profile-readme/profile/README.md create mode 100644 brand/profile-readme/profile/assets/logo-mark-light.svg create mode 100644 brand/profile-readme/profile/assets/logo-mark.svg create mode 100644 brand/profile-readme/profile/assets/wordmark-dark.svg create mode 100644 brand/profile-readme/profile/assets/wordmark.svg create mode 100644 brand/proposed-readmes/adapter-aws-agentcore/README.md create mode 100644 brand/proposed-readmes/adapter-template/README.md create mode 100644 brand/proposed-readmes/cli/README.md create mode 100644 brand/proposed-readmes/core/README.md create mode 100644 brand/proposed-readmes/docs/README.md create mode 100644 brand/proposed-readmes/sdk-js/README.md create mode 100644 brand/proposed-readmes/store-sqlite/README.md create mode 100644 brand/proposed-readmes/worker-agentcore/README.md create mode 100644 brand/website/assets/favicon.svg create mode 100644 brand/website/assets/og.svg create mode 100644 brand/website/index.html create mode 100644 brand/website/script.js create mode 100644 brand/website/styles.css create mode 100644 brand/wordmark-dark.svg create mode 100644 brand/wordmark.svg diff --git a/README.md b/README.md index 2a750ba..c504492 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,131 @@ -# @agent-dispatch/mcp-server +

+ + + AgentDispatch + +

-MCP server exposing provider-neutral AgentDispatch tools. +

Give your AI assistant a fleet of cloud agents.

-Tools: +

+ @agent-dispatch/mcp-server exposes provider-neutral agent orchestration to any MCP client — so Claude, Cursor, and Claude Code can spawn and supervise long-running cloud agents with a single tool call. +

-- `list_providers` -- `list_capabilities` -- `list_account_profiles` -- `spawn_cloud_agent` -- `dispatch_task` -- `get_task_status` -- `get_task_logs` -- `get_task_result` -- `cancel_task` +

+ Quick start · + Tools · + How it works · + Config · + The rest of AgentDispatch +

-## Running +

+ npm + MCP + License + TypeScript +

-```bash -npm install @agent-dispatch/core @agent-dispatch/mcp-server @agent-dispatch/store-sqlite @agent-dispatch/adapter-aws-agentcore -npx agentdispatch-mcp --config agentdispatch.config.json -``` +--- + +## Why this exists -The server loads account profiles, SQLite storage, and configured adapters from `agentdispatch.config.json`. +Modern AI assistants are great at planning work. They're not great at *running* it — long-running, sandboxed, multi-step jobs need real cloud infrastructure. -Before wiring it into an MCP client, validate that the stdio server can load config: +**AgentDispatch closes that loop.** This MCP server turns any compliant client into a control plane for cloud agents: + +- 🧠 **One tool, every cloud.** Today: AWS Bedrock AgentCore. Tomorrow: anything that implements the adapter contract. +- ⚡ **Spawn in one line.** `spawn_cloud_agent({ instruction: "..." })` and you're off — sane defaults from your runtime profile. +- 🔭 **Full lifecycle.** Status, logs, results, cancel — all over MCP. +- 🧩 **Provider-neutral by design.** Built on [`@agent-dispatch/core`](https://github.com/agent-dispatch/core)'s capability + adapter model. +- 🪶 **Lightweight.** stdio transport, SQLite state, zero hidden services. + +## Quick start ```bash +npm install \ + @agent-dispatch/core \ + @agent-dispatch/mcp-server \ + @agent-dispatch/store-sqlite \ + @agent-dispatch/adapter-aws-agentcore + npx agentdispatch-mcp --config agentdispatch.config.json --check ``` -Configure `defaults.runtime` for the simple agent path. Agents can then call `spawn_cloud_agent` with only an `instruction`; AgentDispatch resolves provider, account, backend, target mode, framework, and runtime tool defaults from the named runtime profile. +Wire it into your MCP client: + +```jsonc +// Claude Desktop, Cursor, Claude Code — same shape +{ + "mcpServers": { + "agentdispatch": { + "command": "npx", + "args": ["agentdispatch-mcp", "--config", "/abs/path/agentdispatch.config.json"] + } + } +} +``` + +Then, from the model side: + +```ts +spawn_cloud_agent({ instruction: "Audit our S3 buckets for public read and report findings." }) +// → { task_id: "task_...", status: "running" } + +get_task_status({ task_id: "task_..." }) +get_task_logs({ task_id: "task_...", cursor: 0 }) +get_task_result({ task_id: "task_..." }) +``` + +The defaults come from your runtime profile — provider, account, backend, target mode, framework, and runtime tools are all resolved for you. -Minimal AWS AgentCore session-mode config: +## Tools + +| Tool | What it does | +| --- | --- | +| `spawn_cloud_agent` | The shortcut. One `instruction`, defaults from a runtime profile, returns a `task_id`. | +| `dispatch_task` | The escape hatch. Full control over provider, capability, backend, target, and input. | +| `get_task_status` | Current status for a dispatched task. | +| `get_task_logs` | Paginated logs, cursor-based. | +| `get_task_result` | Final result payload when the task completes. | +| `cancel_task` | Cancel an in-flight task. | +| `list_providers` | Providers configured in this server. | +| `list_capabilities` | Capabilities a provider exposes (filterable). | +| `list_account_profiles` | Account profiles configured for dispatch. | + +All tool inputs are validated with [Zod](https://zod.dev). See [`src/schemas.ts`](src/schemas.ts) for the exact shapes. + +## How it works + +``` + MCP client (Claude, Cursor, Claude Code) + │ stdio + ▼ + ┌─────────────────────────────┐ + │ @agent-dispatch/mcp-server │ ← this repo + └──────────────┬──────────────┘ + │ + ▼ + ┌─────────────────────────────┐ + │ @agent-dispatch/core │ ← runtime contracts + dispatch + └──────┬──────────┬───────────┘ + │ │ + ▼ ▼ + ┌──────────┐ ┌────────────────────────────┐ + │ store │ │ adapter (e.g. AWS │ + │ (sqlite) │ │ AgentCore) → worker │ + └──────────┘ └────────────────────────────┘ +``` + +1. **Caller** issues a tool call over MCP. +2. **MCP server** validates input, hydrates defaults from a runtime profile, and calls the core runtime. +3. **Core** picks the right capability + adapter, persists the task, dispatches. +4. **Adapter** invokes the worker on the target cloud (synchronous, session, or job). +5. Status, logs, and results flow back the same way. + +## Configuration + +Minimal AWS Bedrock AgentCore (session mode): ```json { @@ -71,3 +165,48 @@ Minimal AWS AgentCore session-mode config: } } ``` + +Once `defaults.runtime` is set, `spawn_cloud_agent` only needs an `instruction`. Everything else is resolved from the named runtime profile. + +Validate the wiring before connecting an MCP client: + +```bash +npx agentdispatch-mcp --config agentdispatch.config.json --check +``` + +## Real-world use cases + +- **Background research from chat.** Tell Claude "go investigate X, come back when you have findings" — the model spawns a session-mode agent, polls status, returns the result inline. +- **Parallel codebase audits.** Claude Code fans out a dozen `spawn_cloud_agent` calls, one per service, and aggregates the reports. +- **Long-running data jobs.** Job-mode tasks run for minutes-to-hours without holding the assistant's context open. +- **Tool-using cloud agents.** Compose runtime tools (web search, code interpreter, etc.) into a single runtime profile and reuse from anywhere. + +## The rest of AgentDispatch + +This MCP server is one face of a small, focused stack: + +| Repo | Role | +| --- | --- | +| [`core`](https://github.com/agent-dispatch/core) | Runtime contracts and dispatch orchestration | +| [`mcp-server`](https://github.com/agent-dispatch/mcp-server) | **You are here.** MCP face for the runtime | +| [`sdk-js`](https://github.com/agent-dispatch/sdk-js) | TypeScript SDK for application code | +| [`cli`](https://github.com/agent-dispatch/cli) | Command-line interface | +| [`store-sqlite`](https://github.com/agent-dispatch/store-sqlite) | SQLite + filesystem state store | +| [`adapter-aws-agentcore`](https://github.com/agent-dispatch/adapter-aws-agentcore) | AWS Bedrock AgentCore adapter | +| [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore) | Standard AgentCore worker contract | +| [`adapter-template`](https://github.com/agent-dispatch/adapter-template) | Starter for new cloud adapters | +| [`docs`](https://github.com/agent-dispatch/docs) | Documentation | + +## Contributing + +PRs, issues, and adapter contributions are welcome. See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the local workflow. + +If you ship a new adapter, please open a discussion — we'd love to link it from the org README. + +## License + +Apache-2.0. See [`LICENSE`](LICENSE). + +

+ Built by the AgentDispatch contributors · github.com/agent-dispatch +

diff --git a/brand/README.md b/brand/README.md new file mode 100644 index 0000000..9eb508f --- /dev/null +++ b/brand/README.md @@ -0,0 +1,145 @@ +# AgentDispatch brand kit + +This directory holds the proposed visual identity, org profile README, and marketing site for the AgentDispatch organization. Because this branch lives inside `mcp-server` and my publishing access is scoped to a single repo, everything is staged here for you to copy into the right destination repos. + +## Contents + +``` +brand/ +├── logo-mark.svg # square mark for org avatar (dark bg, 200×200, scales) +├── logo-mark-light.svg # square mark for light-bg contexts +├── wordmark.svg # horizontal lockup for light themes (READMEs) +├── wordmark-dark.svg # horizontal lockup for dark themes +├── profile-readme/ +│ └── profile/ +│ ├── README.md # the org profile README +│ └── assets/ # SVGs the README references +├── proposed-readmes/ +│ ├── core/README.md +│ ├── sdk-js/README.md +│ ├── cli/README.md +│ ├── store-sqlite/README.md +│ ├── adapter-aws-agentcore/README.md +│ ├── worker-agentcore/README.md +│ ├── adapter-template/README.md +│ └── docs/README.md +└── website/ # static site, no build step + ├── index.html + ├── styles.css + ├── script.js + └── assets/ + ├── favicon.svg + └── og.svg +``` + +The new `mcp-server` README (the viral entry point) is already in place at the repo root and references `brand/wordmark.svg` directly. + +## Design system + +| Token | Value | +| --- | --- | +| Background (dark) | `#0B1020` | +| Surface (card) | `#131A2E` | +| Border | `#1F2A44` | +| Text | `#E2E8F0` | +| Text muted | `#94A3B8` | +| Accent (violet deep / on light) | `#7C3AED` | +| Accent (cyan deep / on light) | `#06B6D4` | +| Accent (violet light / on dark) | `#A78BFA` | +| Accent (cyan light / on dark) | `#22D3EE` | +| Gradient | `#7C3AED → #06B6D4` (or light variants on dark backgrounds) | +| Typeface | Inter (UI / docs), system-ui fallback | +| Code typeface | ui-monospace / JetBrains Mono | + +The logo mark is a **dispatch hub**: one inbound spoke (left), a glowing core, two outbound spokes (right) ending in nodes. It reads literally as "signal in → fan-out to agents" — the system's job in one shape. + +## How to deploy each piece + +### 1. Org avatar + +Upload `brand/logo-mark.svg` (or the light variant) to the AgentDispatch GitHub org settings → *Profile picture*. GitHub will rasterize it for you; the SVG already has a 44px corner radius so it sits well in a rounded display. + +### 2. Org profile README + +GitHub renders `profile/README.md` from a special repo named `.github` at the org root. + +```bash +# Create the .github repo (one-time, manual since this session is scoped to mcp-server) +gh repo create agent-dispatch/.github --public --description "AgentDispatch org profile" + +git clone https://github.com/agent-dispatch/.github +cd .github + +# Copy from this branch +cp -r path/to/mcp-server/brand/profile-readme/profile ./profile + +git add profile +git commit -m "Add org profile README and brand assets" +git push +``` + +Within a minute of pushing, https://github.com/agent-dispatch will render the new profile. + +### 3. Per-repo READMEs + +For every sibling package, copy the proposed README over the existing one (or merge — they were written to slot in cleanly): + +```bash +for repo in core sdk-js cli store-sqlite adapter-aws-agentcore worker-agentcore adapter-template docs; do + cp brand/proposed-readmes/$repo/README.md ../$repo/README.md +done +``` + +The proposed READMEs reference shared brand assets at +`https://raw.githubusercontent.com/agent-dispatch/.github/main/profile/assets/wordmark{,-dark}.svg`, +so deploy the `.github` repo first (step 2) and the images will resolve everywhere. + +> ⚠️ The proposed sibling READMEs are written to match each repo's stated purpose. Skim each one and customize package names, API examples, and command surfaces against what you've actually shipped before pushing. + +### 4. Website + +The site is intentionally zero-build — three files plus an assets folder. + +Three easy deployment options: + +**A. GitHub Pages from the docs repo** +```bash +git clone https://github.com/agent-dispatch/docs +cp -r brand/website/* ../docs/ +# enable Pages: Settings → Pages → Source: deploy from a branch → main / root +``` + +**B. A dedicated `website` repo** +```bash +gh repo create agent-dispatch/website --public +cd website +cp -r ../mcp-server/brand/website/* . +git add .; git commit -m "Initial site"; git push +# enable Pages, optionally point a CNAME (agentdispatch.dev / .ai / .io) +``` + +**C. Netlify / Cloudflare Pages / Vercel** +Drag-drop the `brand/website` directory. It's all static — no framework, no build step. + +Recommended: option B with a custom domain. Once live, update README hero links and the OG meta tags in `index.html` to point at the canonical URL. + +### 5. Once everything is live + +Update three things, in order: + +1. Set the org avatar (step 1). +2. Push the `.github` repo (step 2) — this also publishes the wordmark SVGs the other READMEs reference. +3. Push the per-repo READMEs (step 3). +4. Publish the website (step 4) and add the canonical URL to: + - the org profile README ("Learn more →") + - the mcp-server README header + - each repo's `package.json` `homepage` field + +## Approving the look + +If you want to tweak the logo, the two knobs that matter most: + +- **Spoke angles.** Currently 0° left, ±28° on the right. Tighter (±15°) reads more focused; wider (±45°) reads more "broadcast". Edit the `x2`/`y2` coordinates in `logo-mark.svg`. +- **Palette.** Violet→cyan is on-trend for AI tooling but easy to change — swap the gradient stops in the `` block. The whole brand follows from these two colors. + +That's the entire kit. Ping me if you want a horizontal social-media banner (1500×500 GitHub-org sized), an animated SVG variant, or a dark-mode preview screenshot of the site. diff --git a/brand/logo-mark-light.svg b/brand/logo-mark-light.svg new file mode 100644 index 0000000..ba5664c --- /dev/null +++ b/brand/logo-mark-light.svg @@ -0,0 +1,25 @@ + + AgentDispatch + + + + + + + + + + + + + + + + + + + + + + + diff --git a/brand/logo-mark.svg b/brand/logo-mark.svg new file mode 100644 index 0000000..20ba90d --- /dev/null +++ b/brand/logo-mark.svg @@ -0,0 +1,30 @@ + + AgentDispatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/brand/profile-readme/profile/README.md b/brand/profile-readme/profile/README.md new file mode 100644 index 0000000..b926678 --- /dev/null +++ b/brand/profile-readme/profile/README.md @@ -0,0 +1,100 @@ +

+ + + AgentDispatch + +

+ +

The provider-neutral runtime for AI agents.

+ +

+ One contract. Any agent. Any cloud.
+ Spawn long-running cloud agents from your CLI, your code, or any MCP client — without picking a provider for life. +

+ +

+ MCP server · + SDK · + CLI · + Core · + Docs +

+ +--- + +## Why AgentDispatch? + +Every agent runtime today ships its own API, its own worker contract, its own deployment story. Pick one and you're locked in. Switch providers and you rewrite orchestration code from scratch. + +**AgentDispatch is the dispatch layer in between.** Write one integration. Point it at AWS Bedrock AgentCore today, plug in something else tomorrow — without touching the calling code. + +- 🧠 **Built for the agent era.** Long-running, stateful, multi-step tasks are first-class. +- 🧩 **Provider-neutral by design.** A small, stable capability + adapter contract. +- ⚡ **Three faces, one runtime.** CLI for humans, SDK for code, MCP server for AI assistants. +- 🪶 **Lightweight defaults.** SQLite store. stdio transport. Zero hidden services. +- 🔓 **Open.** Apache-2.0 across the stack. Adapter template included. + +## How it fits together + +``` + Humans Apps AI assistants + │ │ │ + ▼ ▼ ▼ + ┌─────┐ ┌─────────┐ ┌─────────────┐ + │ cli │ │ sdk-js │ │ mcp-server │ + └──┬──┘ └────┬────┘ └──────┬──────┘ + └─────────────────┼──────────────────────┘ + ▼ + ┌───────────────────┐ + │ core │ ← contracts + dispatch + └─────────┬─────────┘ + ┌───────────────┼────────────────┐ + ▼ ▼ ▼ + ┌──────────┐ ┌──────────┐ ┌──────────────────┐ + │ store │ │ adapter │ → │ worker (in cloud)│ + │ (sqlite) │ │ (aws) │ └──────────────────┘ + └──────────┘ └──────────┘ +``` + +## Start here + +Most people want one of these three: + +- **AI assistant control plane** — wire [`mcp-server`](https://github.com/agent-dispatch/mcp-server) into Claude Desktop / Cursor / Claude Code and your model can spawn cloud agents on demand. +- **From your own app** — install [`sdk-js`](https://github.com/agent-dispatch/sdk-js) and call `client.spawnCloudAgent({...})`. +- **From your terminal** — `npx @agent-dispatch/cli spawn "..."` and watch it run. + +```bash +npm install \ + @agent-dispatch/core \ + @agent-dispatch/mcp-server \ + @agent-dispatch/store-sqlite \ + @agent-dispatch/adapter-aws-agentcore +``` + +## Repositories + +| Repo | What it is | +| --- | --- | +| [`core`](https://github.com/agent-dispatch/core) | Runtime contracts and dispatch orchestration. The heart. | +| [`mcp-server`](https://github.com/agent-dispatch/mcp-server) | MCP face for the runtime. The viral entry point. | +| [`sdk-js`](https://github.com/agent-dispatch/sdk-js) | TypeScript SDK for application code. | +| [`cli`](https://github.com/agent-dispatch/cli) | Command-line interface for operators. | +| [`store-sqlite`](https://github.com/agent-dispatch/store-sqlite) | Default SQLite + filesystem state store. | +| [`adapter-aws-agentcore`](https://github.com/agent-dispatch/adapter-aws-agentcore) | AWS Bedrock AgentCore adapter. | +| [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore) | Standard AgentCore worker contract. | +| [`adapter-template`](https://github.com/agent-dispatch/adapter-template) | Starter for new cloud adapters. | +| [`docs`](https://github.com/agent-dispatch/docs) | Documentation and guides. | + +## Build your own adapter + +Adding a new provider is meant to be a focused, well-scoped task. Fork [`adapter-template`](https://github.com/agent-dispatch/adapter-template), implement the five-method contract from [`core`](https://github.com/agent-dispatch/core), ship. + +## Community + +- Issues and PRs welcome on any repo. +- Open a discussion on `docs` for questions, design ideas, or to share an adapter you've built. + +

+ Apache-2.0 · Built by the AgentDispatch contributors +

diff --git a/brand/profile-readme/profile/assets/logo-mark-light.svg b/brand/profile-readme/profile/assets/logo-mark-light.svg new file mode 100644 index 0000000..ba5664c --- /dev/null +++ b/brand/profile-readme/profile/assets/logo-mark-light.svg @@ -0,0 +1,25 @@ + + AgentDispatch + + + + + + + + + + + + + + + + + + + + + + + diff --git a/brand/profile-readme/profile/assets/logo-mark.svg b/brand/profile-readme/profile/assets/logo-mark.svg new file mode 100644 index 0000000..20ba90d --- /dev/null +++ b/brand/profile-readme/profile/assets/logo-mark.svg @@ -0,0 +1,30 @@ + + AgentDispatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/brand/profile-readme/profile/assets/wordmark-dark.svg b/brand/profile-readme/profile/assets/wordmark-dark.svg new file mode 100644 index 0000000..12fed29 --- /dev/null +++ b/brand/profile-readme/profile/assets/wordmark-dark.svg @@ -0,0 +1,38 @@ + + AgentDispatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AgentDispatch + PROVIDER-NEUTRAL RUNTIME FOR AI AGENTS + diff --git a/brand/profile-readme/profile/assets/wordmark.svg b/brand/profile-readme/profile/assets/wordmark.svg new file mode 100644 index 0000000..be70e6f --- /dev/null +++ b/brand/profile-readme/profile/assets/wordmark.svg @@ -0,0 +1,41 @@ + + AgentDispatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AgentDispatch + + + PROVIDER-NEUTRAL RUNTIME FOR AI AGENTS + diff --git a/brand/proposed-readmes/adapter-aws-agentcore/README.md b/brand/proposed-readmes/adapter-aws-agentcore/README.md new file mode 100644 index 0000000..8786d35 --- /dev/null +++ b/brand/proposed-readmes/adapter-aws-agentcore/README.md @@ -0,0 +1,65 @@ +

+ + + AgentDispatch + +

+ +

AWS Bedrock AgentCore adapter for AgentDispatch.

+ +

+ @agent-dispatch/adapter-aws-agentcore implements the AgentDispatch capability contract against Amazon Bedrock AgentCore. Drop it into your runtime and the rest of the stack (CLI, SDK, MCP) just works. +

+ +--- + +## Install + +```bash +npm install @agent-dispatch/adapter-aws-agentcore @agent-dispatch/core +``` + +## What it does + +- Implements the `agent-runtime` capability for the `aws` provider. +- Supports session and job target modes. +- Invokes AgentCore runtimes by ARN + qualifier. +- Streams logs and results back into the configured store. + +## Configuration + +```json +{ + "accounts": { + "dev-aws": { + "provider": "aws", + "region": "us-west-2", + "credentialSource": "aws-sdk-default" + } + }, + "backends": { + "aws-agentcore": { + "provider": "aws", + "capability": "agent-runtime", + "adapter": "aws-agentcore", + "account": "dev-aws", + "details": { + "runtimeArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:agent/:1", + "qualifier": "DEFAULT" + } + } + } +} +``` + +`credentialSource: "aws-sdk-default"` uses the standard AWS SDK credential chain (env vars, profiles, instance metadata, etc.). + +## Requirements + +- An AWS account with Bedrock AgentCore enabled in the target region. +- An AgentCore runtime ARN you have permission to invoke. +- A worker contract compatible with [`@agent-dispatch/worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore). + +## License + +Apache-2.0. diff --git a/brand/proposed-readmes/adapter-template/README.md b/brand/proposed-readmes/adapter-template/README.md new file mode 100644 index 0000000..d98710e --- /dev/null +++ b/brand/proposed-readmes/adapter-template/README.md @@ -0,0 +1,59 @@ +

+ + + AgentDispatch + +

+ +

Ship an AgentDispatch adapter in an afternoon.

+ +

+ Fork this template, implement five methods, register your adapter — your runtime is now reachable from the CLI, the SDK, and every MCP client. +

+ +--- + +## Why this exists + +Every new agent runtime today ships its own API. AgentDispatch hides that diversity behind one capability contract. To support a new provider you only need to bridge that contract — this template gives you the scaffolding. + +## What you get + +- A `package.json` with the right peer dependencies. +- A `src/index.ts` with the adapter factory signature. +- A typed skeleton for the `agent-runtime` capability. +- A `vitest` setup with a contract conformance test. +- A `CONTRIBUTING.md` aimed at adapter authors. + +## How to use it + +```bash +gh repo create my-org/agent-dispatch-adapter-mything \ + --template agent-dispatch/adapter-template --public + +cd agent-dispatch-adapter-mything +npm install +npm test +``` + +Then edit `src/index.ts` and implement: + +```ts +createMyThingAdapter(): Adapter { + return { + provider: "mything", + capabilities: [...], + async dispatch(task) { /* your provider call */ }, + async getStatus(taskId) { /* ... */ }, + async getLogs(taskId, cursor, limit) { /* ... */ }, + async getResult(taskId) { /* ... */ }, + async cancel(taskId) { /* ... */ } + }; +} +``` + +Open a discussion on the org when you publish — we'd love to link it. + +## License + +Apache-2.0. diff --git a/brand/proposed-readmes/cli/README.md b/brand/proposed-readmes/cli/README.md new file mode 100644 index 0000000..dbc7ba9 --- /dev/null +++ b/brand/proposed-readmes/cli/README.md @@ -0,0 +1,59 @@ +

+ + + AgentDispatch + +

+ +

The AgentDispatch command line.

+ +

+ Spawn, inspect, and cancel cloud agents from your terminal — same runtime, same profiles as the SDK and MCP server. +

+ +--- + +## Install + +```bash +npm install -g @agent-dispatch/cli +# or one-shot +npx @agent-dispatch/cli --help +``` + +## Common commands + +```bash +# Validate config +agentdispatch check --config agentdispatch.config.json + +# Spawn an agent with the default runtime profile +agentdispatch spawn "Summarize the latest release notes from our changelog." + +# Same, with an explicit runtime profile +agentdispatch spawn --runtime research-agent "Investigate this anomaly" + +# Lifecycle +agentdispatch status +agentdispatch logs --follow +agentdispatch result +agentdispatch cancel + +# Introspection +agentdispatch providers +agentdispatch capabilities --provider aws +agentdispatch accounts +``` + +## Output + +All commands support `--json` for machine-readable output. Otherwise the CLI prints a compact, syntax-highlighted view. + +## See also + +- [`@agent-dispatch/sdk`](https://github.com/agent-dispatch/sdk-js) — same operations, from code +- [`@agent-dispatch/mcp-server`](https://github.com/agent-dispatch/mcp-server) — same operations, from an MCP client + +## License + +Apache-2.0. diff --git a/brand/proposed-readmes/core/README.md b/brand/proposed-readmes/core/README.md new file mode 100644 index 0000000..c148cf6 --- /dev/null +++ b/brand/proposed-readmes/core/README.md @@ -0,0 +1,86 @@ +

+ + + AgentDispatch + +

+ +

The provider-neutral core of AgentDispatch.

+ +

+ @agent-dispatch/core defines the runtime contracts — providers, capabilities, accounts, backends, runtime profiles — and the dispatch loop every other AgentDispatch package builds on. +

+ +

+ Install · + Concepts · + Usage · + The rest of the stack +

+ +--- + +## What's in here + +- **`RuntimeService`** — the dispatch orchestrator. Resolves runtime profiles, validates capabilities, persists tasks, drives adapters. +- **Contracts** — `DispatchRequest`, `RuntimeProfile`, capability descriptors, task lifecycle types. +- **Errors** — `AgentDispatchError` with stable, structured error codes. + +If you're building an adapter, a store, a CLI, or an MCP server, this is the package you depend on. + +## Install + +```bash +npm install @agent-dispatch/core +``` + +## Concepts + +| Term | Meaning | +| --- | --- | +| **Provider** | A cloud or runtime ecosystem (`aws`, future: `azure`, `gcp`, `self-hosted`). | +| **Capability** | A typed contract a provider exposes (e.g. `agent-runtime` with task types `agent.run`). | +| **Account profile** | Named credentials + region scope. | +| **Backend** | A concrete deployment of a capability (e.g. an AgentCore runtime ARN). | +| **Runtime profile** | The high-level "what to run" preset: provider + account + capability + target + framework. | +| **Adapter** | The plug-in that fulfils a capability against a real cloud API. | +| **Store** | Pluggable state for tasks, logs, and results. | + +The dispatch loop, in one sentence: *pick a capability, pick an adapter, persist a task, invoke the worker, stream status and logs back.* + +## Usage + +Bootstrap a runtime from config and dispatch a task: + +```ts +import { createRuntimeService } from "@agent-dispatch/core"; +import { createSqliteStore } from "@agent-dispatch/store-sqlite"; +import { createAwsAgentCoreAdapter } from "@agent-dispatch/adapter-aws-agentcore"; + +const runtime = createRuntimeService({ + store: createSqliteStore({ stateDir: ".agentdispatch" }), + adapters: [createAwsAgentCoreAdapter()], + config: /* loaded from agentdispatch.config.json */ +}); + +const task = await runtime.dispatchTask({ + provider: "aws", + accountProfile: "dev-aws", + capability: "agent-runtime", + taskType: "agent.run", + target: { mode: "session" }, + input: { instruction: "summarise the latest CloudTrail anomalies" } +}); + +await runtime.getTaskStatus(task.taskId); +await runtime.getTaskLogs(task.taskId, 0, 100); +await runtime.getTaskResult(task.taskId); +``` + +## Building an adapter + +The adapter contract is intentionally small. See [`adapter-template`](https://github.com/agent-dispatch/adapter-template) for a starting point. + +## License + +Apache-2.0. diff --git a/brand/proposed-readmes/docs/README.md b/brand/proposed-readmes/docs/README.md new file mode 100644 index 0000000..910d2ab --- /dev/null +++ b/brand/proposed-readmes/docs/README.md @@ -0,0 +1,54 @@ +

+ + + AgentDispatch + +

+ +

AgentDispatch documentation.

+ +

+ Guides, architecture notes, and reference material for AgentDispatch. +

+ +

+ Getting started · + Guides · + Reference · + All repos +

+ +--- + +## Getting started + +- **5-minute quick start** — wire AgentDispatch into Claude Desktop and spawn your first cloud agent. +- **Concepts** — providers, capabilities, accounts, backends, runtime profiles. +- **Choosing a target mode** — sync, session, job. + +## Guides + +- Configure AWS Bedrock AgentCore from scratch. +- Wire AgentDispatch into Claude Desktop / Cursor / Claude Code. +- Compose runtime tools. +- Operate AgentDispatch in CI. + +## Reference + +- Config schema (`agentdispatch.config.json`). +- MCP tool schemas. +- SDK API. +- CLI commands. +- Adapter contract. +- Worker contract. +- Error codes. + +## See also + +- [`core`](https://github.com/agent-dispatch/core) · [`mcp-server`](https://github.com/agent-dispatch/mcp-server) · [`sdk-js`](https://github.com/agent-dispatch/sdk-js) · [`cli`](https://github.com/agent-dispatch/cli) +- [`adapter-aws-agentcore`](https://github.com/agent-dispatch/adapter-aws-agentcore) · [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore) · [`adapter-template`](https://github.com/agent-dispatch/adapter-template) +- [`store-sqlite`](https://github.com/agent-dispatch/store-sqlite) + +## License + +Apache-2.0. diff --git a/brand/proposed-readmes/sdk-js/README.md b/brand/proposed-readmes/sdk-js/README.md new file mode 100644 index 0000000..afbb67c --- /dev/null +++ b/brand/proposed-readmes/sdk-js/README.md @@ -0,0 +1,70 @@ +

+ + + AgentDispatch + +

+ +

TypeScript SDK for AgentDispatch.

+ +

+ @agent-dispatch/sdk is the ergonomic way to dispatch cloud agents from your app code. One client, every provider you have configured. +

+ +--- + +## Install + +```bash +npm install @agent-dispatch/sdk @agent-dispatch/core +``` + +## Quick start + +```ts +import { createClient } from "@agent-dispatch/sdk"; + +const client = createClient({ configPath: "agentdispatch.config.json" }); + +const { taskId } = await client.spawnCloudAgent({ + instruction: "Find all functions over 300 lines and propose split points.", + runtime: "code-review" +}); + +for await (const event of client.streamTask(taskId)) { + console.log(event); +} + +const result = await client.getTaskResult(taskId); +``` + +## Features + +- **Typed end-to-end** — request/response types come from [`@agent-dispatch/core`](https://github.com/agent-dispatch/core). +- **Sync, session, and job modes** — same client API regardless of target mode. +- **Streaming** — async iterator over status + log events. +- **Cancellation** — built on `AbortSignal`. + +## API surface + +```ts +client.spawnCloudAgent(input) +client.dispatchTask(request) +client.getTaskStatus(taskId) +client.getTaskLogs(taskId, { cursor, limit }) +client.getTaskResult(taskId) +client.cancelTask(taskId) +client.streamTask(taskId) // async iterable +client.listProviders() +client.listCapabilities(provider?) +client.listAccountProfiles() +``` + +## See also + +- [`@agent-dispatch/mcp-server`](https://github.com/agent-dispatch/mcp-server) — same surface, exposed over MCP +- [`@agent-dispatch/cli`](https://github.com/agent-dispatch/cli) — same surface, from your terminal + +## License + +Apache-2.0. diff --git a/brand/proposed-readmes/store-sqlite/README.md b/brand/proposed-readmes/store-sqlite/README.md new file mode 100644 index 0000000..f8029ea --- /dev/null +++ b/brand/proposed-readmes/store-sqlite/README.md @@ -0,0 +1,44 @@ +

+ + + AgentDispatch + +

+ +

SQLite + filesystem state store for AgentDispatch.

+ +

+ @agent-dispatch/store-sqlite is the default, zero-config store. Tasks and metadata live in SQLite; logs and large results live as files under a state directory. +

+ +--- + +## Install + +```bash +npm install @agent-dispatch/store-sqlite @agent-dispatch/core +``` + +## Usage + +```ts +import { createSqliteStore } from "@agent-dispatch/store-sqlite"; +import { createRuntimeService } from "@agent-dispatch/core"; + +const store = createSqliteStore({ stateDir: ".agentdispatch" }); +const runtime = createRuntimeService({ store, adapters: [...], config }); +``` + +The store will create `/state.db` and a `logs/` directory on first use. + +## Why SQLite + +- **No infrastructure.** Single file. Works on a laptop, in CI, and on a server. +- **Transactional.** Task state transitions are atomic. +- **Inspectable.** It's just SQLite — `sqlite3 .agentdispatch/state.db` and you can read everything. + +For larger deployments, implement the `Store` contract from [`@agent-dispatch/core`](https://github.com/agent-dispatch/core) against Postgres, DynamoDB, or your store of choice. + +## License + +Apache-2.0. diff --git a/brand/proposed-readmes/worker-agentcore/README.md b/brand/proposed-readmes/worker-agentcore/README.md new file mode 100644 index 0000000..82c2c95 --- /dev/null +++ b/brand/proposed-readmes/worker-agentcore/README.md @@ -0,0 +1,64 @@ +

+ + + AgentDispatch + +

+ +

The standard worker contract for AgentCore agents.

+ +

+ @agent-dispatch/worker-agentcore defines the request and response shapes AgentDispatch dispatches into AgentCore — and a small runtime helper so you don't have to implement the framing yourself. +

+ +--- + +## Install + +```bash +npm install @agent-dispatch/worker-agentcore +``` + +## The contract + +Inbound (from AgentDispatch → worker): + +```jsonc +{ + "instruction": "string", + "context": { /* arbitrary */ }, + "framework": "strands" | "...", + "runtime_tools": { /* runtime-tool config */ } +} +``` + +Outbound (worker → AgentDispatch): + +```jsonc +{ + "status": "succeeded" | "failed", + "result": { /* arbitrary */ }, + "logs": [{ "ts": "...", "level": "info", "message": "..." }] +} +``` + +## Usage in a worker + +```ts +import { createWorker } from "@agent-dispatch/worker-agentcore"; + +export const handler = createWorker(async ({ instruction, context, runtimeTools }) => { + // your agent loop here + return { result: { answer: "..." } }; +}); +``` + +The helper: + +- Validates the inbound payload. +- Wires logs into the AgentCore output channel. +- Captures errors into the standard failure envelope. + +## License + +Apache-2.0. diff --git a/brand/website/assets/favicon.svg b/brand/website/assets/favicon.svg new file mode 100644 index 0000000..20ba90d --- /dev/null +++ b/brand/website/assets/favicon.svg @@ -0,0 +1,30 @@ + + AgentDispatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/brand/website/assets/og.svg b/brand/website/assets/og.svg new file mode 100644 index 0000000..10d25da --- /dev/null +++ b/brand/website/assets/og.svg @@ -0,0 +1,56 @@ + + AgentDispatch — provider-neutral runtime for AI agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AgentDispatch + + Give your AI assistant + a fleet of cloud agents. + + One contract. Any agent. Any cloud. + + GITHUB.COM/AGENT-DISPATCH + + diff --git a/brand/website/index.html b/brand/website/index.html new file mode 100644 index 0000000..c0aa754 --- /dev/null +++ b/brand/website/index.html @@ -0,0 +1,281 @@ + + + + + + AgentDispatch — provider-neutral runtime for AI agents + + + + + + + + + + + + + + + +
+
+ +
+

Provider-neutral runtime for AI agents

+

+ Give your AI assistant
+ a fleet of cloud agents. +

+

+ One contract. Any agent. Any cloud. Spawn long-running, stateful cloud agents + from your CLI, your code, or any MCP client — without picking a provider for life. +

+ +
+ Apache-2.0 + TypeScript + MCP 1.x + AWS Bedrock AgentCore +
+
+
+ +
+

Why AgentDispatch

+

+ Every agent runtime today ships its own API and worker contract. Pick one and you're locked in. + AgentDispatch is the dispatch layer between your application and the runtime of your choice. +

+
+
+
🧩
+

Provider-neutral

+

A small, stable capability + adapter contract. Write once, swap providers without rewriting orchestration code.

+
+
+
+

Spawn in one line

+

spawn_cloud_agent({ instruction }) resolves provider, account, capability, framework, and tools from a runtime profile.

+
+
+
🔭
+

Full lifecycle

+

Status, paginated logs, results, cancellation — over MCP, the SDK, and the CLI. Same surface, three faces.

+
+
+
🪶
+

Lightweight defaults

+

SQLite for state, stdio for transport, zero hidden services. Runs on your laptop, in CI, and on a server.

+
+
+
+ +
+

Three faces, one runtime

+

Pick the entry point that fits — they all talk to the same dispatcher.

+ +
+ + + +
+ +
+
$ npm install @agent-dispatch/core @agent-dispatch/mcp-server \
+    @agent-dispatch/store-sqlite @agent-dispatch/adapter-aws-agentcore
+
+$ npx agentdispatch-mcp --config agentdispatch.config.json --check
+
// Claude Desktop / Cursor / Claude Code
+{
+  "mcpServers": {
+    "agentdispatch": {
+      "command": "npx",
+      "args": ["agentdispatch-mcp", "--config", "/abs/path/agentdispatch.config.json"]
+    }
+  }
+}
+
+ +
+
$ npm install @agent-dispatch/sdk @agent-dispatch/core
+
import { createClient } from "@agent-dispatch/sdk";
+
+const client = createClient({ configPath: "agentdispatch.config.json" });
+
+const { taskId } = await client.spawnCloudAgent({
+  instruction: "Audit our S3 buckets for public read.",
+  runtime: "security-agent"
+});
+
+for await (const event of client.streamTask(taskId)) console.log(event);
+
+ +
+
$ npm install -g @agent-dispatch/cli
+
+$ agentdispatch check --config agentdispatch.config.json
+$ agentdispatch spawn "Summarise the latest release notes."
+$ agentdispatch logs <task-id> --follow
+$ agentdispatch result <task-id>
+
+
+ +
+

How it fits together

+

+ Callers issue tool calls. Core resolves a capability + adapter and persists the task. + The adapter invokes a worker on the target cloud. Status and logs flow back the same way. +

+
+ + + + + + + + + + + + + + + CLI + + SDK + + MCP server + + + + + + + + + + @agent-dispatch/core + runtime contracts · dispatch loop + + + + + + + + + + store · SQLite + files + + + adapter · AWS AgentCore + + + worker · in the cloud + + + + + + + +
+
+ +
+

The stack

+

Nine small packages, one focused job each.

+ +
+ +
+

Ready to dispatch?

+

Wire AgentDispatch into your assistant and watch the model fan out work it could never have done alone.

+ +
+
+ + + + + + diff --git a/brand/website/script.js b/brand/website/script.js new file mode 100644 index 0000000..caf0e68 --- /dev/null +++ b/brand/website/script.js @@ -0,0 +1,27 @@ +// Tabs +document.querySelectorAll(".tab").forEach((tab) => { + tab.addEventListener("click", () => { + const target = tab.dataset.tab; + document.querySelectorAll(".tab").forEach((t) => t.classList.toggle("active", t === tab)); + document.querySelectorAll(".tab-panel").forEach((p) => { + p.classList.toggle("active", p.dataset.panel === target); + }); + }); +}); + +// Click-to-copy on
 blocks
+document.querySelectorAll("pre").forEach((pre) => {
+  pre.title = "Click to copy";
+  pre.style.cursor = "copy";
+  pre.addEventListener("click", async () => {
+    const text = pre.innerText;
+    try {
+      await navigator.clipboard.writeText(text);
+      const original = pre.style.borderColor;
+      pre.style.borderColor = "#22D3EE";
+      setTimeout(() => { pre.style.borderColor = original; }, 600);
+    } catch {
+      /* ignore */
+    }
+  });
+});
diff --git a/brand/website/styles.css b/brand/website/styles.css
new file mode 100644
index 0000000..017d3c5
--- /dev/null
+++ b/brand/website/styles.css
@@ -0,0 +1,284 @@
+:root {
+  --bg: #0B1020;
+  --bg-soft: #11172A;
+  --bg-card: #131A2E;
+  --border: #1F2A44;
+  --text: #E2E8F0;
+  --text-muted: #94A3B8;
+  --text-dim: #64748B;
+  --accent-1: #A78BFA;
+  --accent-2: #22D3EE;
+  --accent-1-deep: #7C3AED;
+  --accent-2-deep: #06B6D4;
+  --maxw: 1120px;
+  --radius: 14px;
+  --radius-lg: 22px;
+}
+
+* { box-sizing: border-box; }
+html { scroll-behavior: smooth; }
+body {
+  margin: 0;
+  font-family: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
+  font-feature-settings: "ss01", "cv11";
+  background: var(--bg);
+  color: var(--text);
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  line-height: 1.55;
+}
+
+a { color: inherit; text-decoration: none; }
+code { font-family: ui-monospace, "JetBrains Mono", "SF Mono", Menlo, monospace; font-size: 0.92em; }
+
+/* Nav */
+.nav {
+  position: sticky; top: 0; z-index: 50;
+  display: flex; align-items: center; justify-content: space-between;
+  padding: 18px 28px;
+  background: rgba(11, 16, 32, 0.78);
+  backdrop-filter: saturate(180%) blur(14px);
+  -webkit-backdrop-filter: saturate(180%) blur(14px);
+  border-bottom: 1px solid rgba(255,255,255,0.04);
+}
+.brand { display: flex; align-items: center; gap: 12px; font-weight: 800; letter-spacing: -0.01em; }
+.brand-mark { width: 32px; height: 32px; }
+.brand-text { font-size: 18px; }
+.nav-links { display: flex; gap: 24px; align-items: center; }
+.nav-links a { color: var(--text-muted); font-size: 14px; font-weight: 500; transition: color .15s ease; }
+.nav-links a:hover { color: var(--text); }
+.nav-links .cta {
+  color: #fff;
+  padding: 9px 16px;
+  border-radius: 999px;
+  background: linear-gradient(135deg, var(--accent-1-deep), var(--accent-2-deep));
+  font-weight: 600;
+}
+
+/* Hero */
+.hero {
+  position: relative;
+  padding: 96px 24px 80px;
+  overflow: hidden;
+}
+.hero-inner { max-width: var(--maxw); margin: 0 auto; position: relative; z-index: 1; text-align: center; }
+.eyebrow {
+  display: inline-block;
+  padding: 6px 14px;
+  border-radius: 999px;
+  background: rgba(167, 139, 250, 0.10);
+  border: 1px solid rgba(167, 139, 250, 0.25);
+  color: var(--accent-1);
+  font-size: 13px;
+  font-weight: 600;
+  letter-spacing: 0.02em;
+  margin-bottom: 22px;
+}
+.hero h1 {
+  font-size: clamp(40px, 6vw, 76px);
+  line-height: 1.04;
+  letter-spacing: -0.03em;
+  font-weight: 800;
+  margin: 0 0 22px;
+}
+.grad {
+  background: linear-gradient(135deg, var(--accent-1), var(--accent-2));
+  -webkit-background-clip: text;
+  background-clip: text;
+  color: transparent;
+}
+.lede {
+  font-size: clamp(17px, 1.5vw, 20px);
+  color: var(--text-muted);
+  max-width: 720px;
+  margin: 0 auto 32px;
+}
+.cta-row { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
+.btn {
+  display: inline-block;
+  padding: 13px 22px;
+  border-radius: 12px;
+  font-weight: 600;
+  font-size: 15px;
+  transition: transform .12s ease, box-shadow .15s ease, background .15s ease;
+}
+.btn.primary {
+  background: linear-gradient(135deg, var(--accent-1-deep), var(--accent-2-deep));
+  color: #fff;
+  box-shadow: 0 10px 30px -10px rgba(124, 58, 237, 0.55);
+}
+.btn.primary:hover { transform: translateY(-1px); box-shadow: 0 14px 36px -10px rgba(124, 58, 237, 0.7); }
+.btn.ghost {
+  background: rgba(255,255,255,0.04);
+  border: 1px solid rgba(255,255,255,0.10);
+  color: var(--text);
+}
+.btn.ghost:hover { background: rgba(255,255,255,0.08); }
+.badge-row { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 36px; }
+.badge {
+  font-size: 12px;
+  font-weight: 600;
+  padding: 6px 12px;
+  border-radius: 999px;
+  background: rgba(255,255,255,0.04);
+  border: 1px solid rgba(255,255,255,0.08);
+  color: var(--text-muted);
+  letter-spacing: 0.02em;
+}
+
+/* Orbit (animated background) */
+.orbit {
+  position: absolute; inset: 0;
+  background:
+    radial-gradient(60% 50% at 50% 0%, rgba(124, 58, 237, 0.25) 0%, transparent 60%),
+    radial-gradient(50% 40% at 80% 30%, rgba(6, 182, 212, 0.18) 0%, transparent 60%),
+    radial-gradient(40% 30% at 15% 35%, rgba(167, 139, 250, 0.18) 0%, transparent 60%);
+  filter: blur(10px);
+  pointer-events: none;
+  animation: float 12s ease-in-out infinite alternate;
+}
+@keyframes float {
+  from { transform: translateY(-6px); }
+  to   { transform: translateY(8px); }
+}
+
+/* Sections */
+section { padding: 72px 24px; }
+.section-title {
+  font-size: clamp(28px, 3.4vw, 40px);
+  letter-spacing: -0.02em;
+  font-weight: 800;
+  margin: 0 0 14px;
+  text-align: center;
+}
+.section-lede {
+  color: var(--text-muted);
+  max-width: 680px;
+  margin: 0 auto 44px;
+  text-align: center;
+  font-size: 17px;
+}
+
+/* Features */
+.features-grid, .repo-grid {
+  max-width: var(--maxw);
+  margin: 0 auto;
+  display: grid;
+  gap: 18px;
+}
+.features-grid { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
+.repo-grid { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
+.card, .repo-card {
+  background: var(--bg-card);
+  border: 1px solid var(--border);
+  border-radius: var(--radius-lg);
+  padding: 22px 22px 20px;
+  transition: transform .15s ease, border-color .15s ease, background .15s ease;
+}
+.card:hover, .repo-card:hover {
+  transform: translateY(-2px);
+  border-color: rgba(167, 139, 250, 0.45);
+  background: #161E37;
+}
+.card h3, .repo-card h3 {
+  margin: 10px 0 6px;
+  font-size: 18px;
+  letter-spacing: -0.01em;
+  display: flex;
+  align-items: center;
+  gap: 10px;
+}
+.card p, .repo-card p { margin: 0; color: var(--text-muted); font-size: 15px; }
+.card-icon { font-size: 22px; }
+.pill {
+  font-size: 11px;
+  font-weight: 700;
+  padding: 3px 8px;
+  border-radius: 999px;
+  background: linear-gradient(135deg, var(--accent-1-deep), var(--accent-2-deep));
+  color: #fff;
+  letter-spacing: 0.03em;
+}
+.repo-card.primary { border-color: rgba(167, 139, 250, 0.45); }
+
+/* Install / tabs */
+.install { max-width: var(--maxw); margin: 0 auto; }
+.tabs {
+  display: flex;
+  gap: 6px;
+  justify-content: center;
+  margin-bottom: 18px;
+  flex-wrap: wrap;
+}
+.tab {
+  background: transparent;
+  border: 1px solid var(--border);
+  color: var(--text-muted);
+  padding: 9px 16px;
+  border-radius: 999px;
+  font: inherit;
+  font-size: 14px;
+  font-weight: 600;
+  cursor: pointer;
+  transition: color .15s ease, background .15s ease, border-color .15s ease;
+}
+.tab:hover { color: var(--text); }
+.tab.active {
+  color: #fff;
+  background: linear-gradient(135deg, var(--accent-1-deep), var(--accent-2-deep));
+  border-color: transparent;
+}
+.tab-panel { display: none; }
+.tab-panel.active { display: grid; gap: 14px; }
+pre {
+  background: #0A0E1C;
+  border: 1px solid var(--border);
+  border-radius: var(--radius);
+  padding: 18px 20px;
+  overflow-x: auto;
+  margin: 0;
+  font-size: 14px;
+  line-height: 1.55;
+  color: #CBD5E1;
+}
+pre code { white-space: pre; }
+.c-c { color: var(--text-dim); }
+.c-k { color: #A78BFA; }
+.c-s { color: #22D3EE; }
+
+/* Arch */
+.arch { background: linear-gradient(180deg, transparent, rgba(167,139,250,0.04), transparent); }
+.arch-diagram {
+  max-width: var(--maxw);
+  margin: 0 auto;
+  background: var(--bg-card);
+  border: 1px solid var(--border);
+  border-radius: var(--radius-lg);
+  padding: 22px;
+}
+.arch-diagram svg { width: 100%; height: auto; display: block; }
+
+/* CTA section */
+.cta-section { text-align: center; padding-top: 32px; padding-bottom: 96px; }
+.cta-section h2 { font-size: clamp(28px, 3.4vw, 40px); letter-spacing: -0.02em; margin: 0 0 12px; }
+.cta-section p { color: var(--text-muted); margin: 0 0 26px; }
+
+/* Footer */
+.footer {
+  border-top: 1px solid rgba(255,255,255,0.05);
+  padding: 28px 24px;
+  text-align: center;
+  color: var(--text-dim);
+  font-size: 14px;
+}
+.footer p { margin: 4px 0; }
+.footer a { color: var(--text-muted); }
+.footer a:hover { color: var(--text); }
+
+@media (max-width: 640px) {
+  .nav { padding: 14px 18px; }
+  .nav-links { gap: 14px; }
+  .nav-links a:not(.cta) { display: none; }
+  .hero { padding: 60px 18px 50px; }
+  section { padding: 56px 18px; }
+}
diff --git a/brand/wordmark-dark.svg b/brand/wordmark-dark.svg
new file mode 100644
index 0000000..12fed29
--- /dev/null
+++ b/brand/wordmark-dark.svg
@@ -0,0 +1,38 @@
+
+  AgentDispatch
+  
+    
+      
+      
+    
+    
+      
+      
+    
+    
+      
+      
+    
+  
+
+  
+    
+    
+
+    
+      
+      
+      
+    
+
+    
+    
+    
+
+    
+    
+  
+
+  AgentDispatch
+  PROVIDER-NEUTRAL RUNTIME FOR AI AGENTS
+
diff --git a/brand/wordmark.svg b/brand/wordmark.svg
new file mode 100644
index 0000000..be70e6f
--- /dev/null
+++ b/brand/wordmark.svg
@@ -0,0 +1,41 @@
+
+  AgentDispatch
+  
+    
+      
+      
+    
+    
+      
+      
+    
+    
+      
+      
+    
+  
+
+  
+    
+    
+
+    
+      
+      
+      
+    
+
+    
+    
+    
+
+    
+    
+  
+
+  
+    AgentDispatch
+  
+
+  PROVIDER-NEUTRAL RUNTIME FOR AI AGENTS
+

From b3247a18db69a888e36c10719f0194a07ae7f108 Mon Sep 17 00:00:00 2001
From: Claude 
Date: Mon, 11 May 2026 04:57:58 +0000
Subject: [PATCH 2/4] docs(brand): redesign mark as cloud + spawning agent
 tiles; rewrite voice around Claude Code, OpenClaw, Hermes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Mark redesign:
- Drop the abstract three-spoke hub for a cloud silhouette that
  literally spawns three agent tiles via outbound spokes. Reads as
  "cloud → spawn agents" instantly at favicon size.
- Glow + activity particles around the cloud. Play-glyph inside each
  agent tile to reinforce "run/spawn".
- Refreshed wordmark, dark wordmark, favicon, and OG image to match.

Messaging refresh (dev-marketing voice, not enterprise):
- Hero: "Spawn cloud agents from your AI" — drop "provider-neutral"
  from the lead; it was telling, not selling.
- Frame the value as: local agents plan, the cloud runs the marathon.
- Name the three target consumers up front: Claude Code, OpenClaw,
  Hermes. Add a "Supported clients and frameworks" section calling
  out that `framework` is a runtime-profile string the worker
  consumes — Strands / OpenClaw / Hermes / your own.
- Website: new hero, new "Made for the agents you already ship with"
  section with cards for each assistant, new feature cards with
  punchier copy ("Real cloud, not your laptop" / "Built for
  marathons" / "Always observable" / "Boring defaults"), new
  architecture diagram showing the three local assistants feeding the
  dispatcher. OG image updated with the same headline.

Files touched:
- brand/logo-mark{,-light}.svg, brand/wordmark{,-dark}.svg
- brand/website/{index.html, styles.css, assets/{favicon,og}.svg}
- brand/profile-readme/profile/{README.md, assets/*}
- README.md (mcp-server root)
---
 README.md                                     | 167 +++++++++++-------
 brand/logo-mark-light.svg                     |  47 +++--
 brand/logo-mark.svg                           |  59 +++++--
 brand/profile-readme/profile/README.md        | 105 ++++++-----
 .../profile/assets/logo-mark-light.svg        |  47 +++--
 .../profile/assets/logo-mark.svg              |  59 +++++--
 .../profile/assets/wordmark-dark.svg          |  63 +++++--
 .../profile/assets/wordmark.svg               |  64 ++++---
 brand/website/assets/favicon.svg              |  59 +++++--
 brand/website/assets/og.svg                   |  82 ++++++---
 brand/website/index.html                      | 156 +++++++++-------
 brand/website/styles.css                      |  38 ++++
 brand/wordmark-dark.svg                       |  63 +++++--
 brand/wordmark.svg                            |  64 ++++---
 14 files changed, 729 insertions(+), 344 deletions(-)

diff --git a/README.md b/README.md
index c504492..2ad9bd8 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,21 @@
 

- AgentDispatch + AgentDispatch

-

Give your AI assistant a fleet of cloud agents.

+

Spawn cloud agents from your AI.

- @agent-dispatch/mcp-server exposes provider-neutral agent orchestration to any MCP client — so Claude, Cursor, and Claude Code can spawn and supervise long-running cloud agents with a single tool call. + Claude Code, OpenClaw, and Hermes are great at planning. They choke when a job runs for hours.
+ @agent-dispatch/mcp-server hands them a managed cloud runtime — one MCP call, results when they land.

Quick start · - Tools · - How it works · + What it does · + Supported clients & frameworks · Config · The rest of AgentDispatch

@@ -22,6 +23,7 @@

npm MCP + AWS Bedrock AgentCore License TypeScript

@@ -30,15 +32,69 @@ ## Why this exists -Modern AI assistants are great at planning work. They're not great at *running* it — long-running, sandboxed, multi-step jobs need real cloud infrastructure. +Local AI assistants plan brilliantly. They get cramped the moment work gets long: -**AgentDispatch closes that loop.** This MCP server turns any compliant client into a control plane for cloud agents: +- A **deep-research** sweep across fifty pages of docs. +- An **account-wide audit** that has to touch every service. +- A **multi-hour** job that has no business sitting in your IDE's context window. -- 🧠 **One tool, every cloud.** Today: AWS Bedrock AgentCore. Tomorrow: anything that implements the adapter contract. -- ⚡ **Spawn in one line.** `spawn_cloud_agent({ instruction: "..." })` and you're off — sane defaults from your runtime profile. -- 🔭 **Full lifecycle.** Status, logs, results, cancel — all over MCP. -- 🧩 **Provider-neutral by design.** Built on [`@agent-dispatch/core`](https://github.com/agent-dispatch/core)'s capability + adapter model. -- 🪶 **Lightweight.** stdio transport, SQLite state, zero hidden services. +Doing it inline burns context, blocks the chat, and dies the second you close the laptop. That's not what local agents are for. + +**AgentDispatch is the missing tool.** One MCP server gives your assistant a single primitive: *spawn a cloud agent with this instruction, come back later for the result.* The work runs on managed cloud compute. Status, logs, and the final output stream back through the same MCP channel. + +- ☁️ **Real cloud, not your laptop.** AWS Bedrock AgentCore today; new clouds plug in through one small adapter contract. +- ⏱️ **Built for marathons.** Sessions for stateful runs. Jobs for hours-long work. Sync for fast turn-around. Same API, three modes. +- 🔭 **Full visibility.** Status, paginated logs, results, cancellation — over MCP, the SDK, or the CLI. +- 🪶 **Boring defaults.** SQLite state. stdio transport. Zero hidden services. Runs on a laptop, in CI, on a server. + +## What it does + +A single MCP server exposes nine tools to your assistant: + +| Tool | What it does | +| --- | --- | +| `spawn_cloud_agent` | The shortcut. One `instruction`, defaults from a runtime profile, returns a `task_id`. | +| `dispatch_task` | The escape hatch. Full control over provider, capability, backend, target, and input. | +| `get_task_status` | Current status for a dispatched task. | +| `get_task_logs` | Paginated logs, cursor-based. | +| `get_task_result` | Final result payload when the task completes. | +| `cancel_task` | Cancel an in-flight task. | +| `list_providers` | Providers configured in this server. | +| `list_capabilities` | Capabilities a provider exposes (filterable). | +| `list_account_profiles` | Account profiles configured for dispatch. | + +The model side looks like this: + +```ts +spawn_cloud_agent({ instruction: "Audit our S3 buckets for public read and report findings." }) +// → { task_id: "task_...", status: "running" } + +get_task_status({ task_id: "task_..." }) +get_task_logs({ task_id: "task_...", cursor: 0 }) +get_task_result({ task_id: "task_..." }) +``` + +All tool inputs are validated with [Zod](https://zod.dev). See [`src/schemas.ts`](src/schemas.ts) for the exact shapes. + +## Supported clients and frameworks + +**Clients** — anything that speaks MCP: + +- 🤖 **Claude Code** — wire it into `~/.claude/mcp_settings.json` (or your project's `.mcp.json`). +- 🦅 **OpenClaw** — add it to your MCP server list and use `spawn_cloud_agent` from inside any task. +- 🪽 **Hermes** — same wire-up; long-running reasoning and tool-rich runs move to the cloud. +- Claude Desktop, Cursor, Continue, Goose, Zed — same JSON, different file. + +**Frameworks the cloud agent can run** — set the `framework` field on a runtime profile: + +| Framework | Use | +| --- | --- | +| `strands` | Agentic loop with tool use, built for AgentCore. | +| `openclaw` | Cloud OpenClaw worker — your local OpenClaw delegates the heavy run. | +| `hermes` | Cloud Hermes worker for long-context reasoning. | +| _your-framework_ | `framework` is a string; whatever your worker understands. | + +Frameworks aren't hard-coded into AgentDispatch — the value travels through to the worker, which decides what to run. The packages above ship reference workers in [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore). ## Quick start @@ -55,7 +111,7 @@ npx agentdispatch-mcp --config agentdispatch.config.json --check Wire it into your MCP client: ```jsonc -// Claude Desktop, Cursor, Claude Code — same shape +// Claude Code, Claude Desktop, OpenClaw, Hermes, Cursor — same shape { "mcpServers": { "agentdispatch": { @@ -66,66 +122,41 @@ Wire it into your MCP client: } ``` -Then, from the model side: - -```ts -spawn_cloud_agent({ instruction: "Audit our S3 buckets for public read and report findings." }) -// → { task_id: "task_...", status: "running" } - -get_task_status({ task_id: "task_..." }) -get_task_logs({ task_id: "task_...", cursor: 0 }) -get_task_result({ task_id: "task_..." }) -``` - -The defaults come from your runtime profile — provider, account, backend, target mode, framework, and runtime tools are all resolved for you. - -## Tools - -| Tool | What it does | -| --- | --- | -| `spawn_cloud_agent` | The shortcut. One `instruction`, defaults from a runtime profile, returns a `task_id`. | -| `dispatch_task` | The escape hatch. Full control over provider, capability, backend, target, and input. | -| `get_task_status` | Current status for a dispatched task. | -| `get_task_logs` | Paginated logs, cursor-based. | -| `get_task_result` | Final result payload when the task completes. | -| `cancel_task` | Cancel an in-flight task. | -| `list_providers` | Providers configured in this server. | -| `list_capabilities` | Capabilities a provider exposes (filterable). | -| `list_account_profiles` | Account profiles configured for dispatch. | - -All tool inputs are validated with [Zod](https://zod.dev). See [`src/schemas.ts`](src/schemas.ts) for the exact shapes. +The defaults come from your runtime profile — provider, account, backend, target mode, framework, and runtime tools are all resolved for you. From the model side, `spawn_cloud_agent({ instruction })` is the only call you need. ## How it works ``` - MCP client (Claude, Cursor, Claude Code) - │ stdio - ▼ - ┌─────────────────────────────┐ - │ @agent-dispatch/mcp-server │ ← this repo - └──────────────┬──────────────┘ - │ - ▼ - ┌─────────────────────────────┐ - │ @agent-dispatch/core │ ← runtime contracts + dispatch - └──────┬──────────┬───────────┘ + Claude Code · OpenClaw · Hermes · any MCP client + │ stdio + ▼ + ┌─────────────────────────────────────────────┐ + │ @agent-dispatch/mcp-server │ ← this repo + └─────────────────────┬───────────────────────┘ + │ + ▼ + ┌─────────────────────────────────────────────┐ + │ @agent-dispatch/core │ ← contracts + dispatch + └──────┬──────────┬───────────────────────────┘ │ │ ▼ ▼ - ┌──────────┐ ┌────────────────────────────┐ - │ store │ │ adapter (e.g. AWS │ - │ (sqlite) │ │ AgentCore) → worker │ - └──────────┘ └────────────────────────────┘ + ┌──────────┐ ┌──────────────────────────────────┐ + │ store │ │ adapter (AWS Bedrock AgentCore) │ + │ (sqlite) │ │ ↓ │ + └──────────┘ │ cloud worker — runs the task │ + └──────────────────────────────────┘ ``` -1. **Caller** issues a tool call over MCP. -2. **MCP server** validates input, hydrates defaults from a runtime profile, and calls the core runtime. +1. **Local assistant** issues `spawn_cloud_agent` over MCP. +2. **MCP server** validates input, hydrates defaults from a runtime profile, calls the core runtime. 3. **Core** picks the right capability + adapter, persists the task, dispatches. -4. **Adapter** invokes the worker on the target cloud (synchronous, session, or job). -5. Status, logs, and results flow back the same way. +4. **Adapter** invokes the worker in your cloud — synchronous, session, or job target mode. +5. **Worker** runs the actual framework (Strands / OpenClaw / Hermes / your own) on managed cloud infrastructure. +6. Status, logs, and results flow back through the same path. ## Configuration -Minimal AWS Bedrock AgentCore (session mode): +Minimal AWS Bedrock AgentCore (session mode) for an OpenClaw-style research agent: ```json { @@ -156,8 +187,8 @@ Minimal AWS Bedrock AgentCore (session mode): "capability": "agent-runtime", "backend": "aws-agentcore", "target": { "mode": "session" }, - "framework": "strands", - "runtimeTools": { "enabled": ["web-search"] } + "framework": "openclaw", + "runtimeTools": { "enabled": ["web-search", "code-interpreter"] } } }, "defaults": { @@ -166,7 +197,7 @@ Minimal AWS Bedrock AgentCore (session mode): } ``` -Once `defaults.runtime` is set, `spawn_cloud_agent` only needs an `instruction`. Everything else is resolved from the named runtime profile. +Once `defaults.runtime` is set, `spawn_cloud_agent` only needs an `instruction`. Switch the `framework` field to run Strands, Hermes, or your own worker contract. Validate the wiring before connecting an MCP client: @@ -176,10 +207,10 @@ npx agentdispatch-mcp --config agentdispatch.config.json --check ## Real-world use cases -- **Background research from chat.** Tell Claude "go investigate X, come back when you have findings" — the model spawns a session-mode agent, polls status, returns the result inline. +- **Deep research from chat.** Claude Code spawns a cloud agent: "Read the last 90 days of CloudTrail anomalies and propose detection rules." The session keeps going. Twenty minutes later it pulls the result. - **Parallel codebase audits.** Claude Code fans out a dozen `spawn_cloud_agent` calls, one per service, and aggregates the reports. -- **Long-running data jobs.** Job-mode tasks run for minutes-to-hours without holding the assistant's context open. -- **Tool-using cloud agents.** Compose runtime tools (web search, code interpreter, etc.) into a single runtime profile and reuse from anywhere. +- **Long-running OpenClaw runs.** OpenClaw plans the work locally, dispatches the multi-hour execution to a managed AgentCore worker. +- **Tool-rich Hermes jobs.** Hermes uses cloud-side tools (web, code interpreter, repo access) that aren't available to the local process. ## The rest of AgentDispatch @@ -201,7 +232,7 @@ This MCP server is one face of a small, focused stack: PRs, issues, and adapter contributions are welcome. See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the local workflow. -If you ship a new adapter, please open a discussion — we'd love to link it from the org README. +If you ship a new framework worker (or a new cloud adapter), please open a discussion — we'd love to link it from the org README. ## License diff --git a/brand/logo-mark-light.svg b/brand/logo-mark-light.svg index ba5664c..9316bf0 100644 --- a/brand/logo-mark-light.svg +++ b/brand/logo-mark-light.svg @@ -1,25 +1,50 @@ - AgentDispatch + AgentDispatch — spawn cloud agents - + + + + + - - - - + + + + + + + + + + + - - - + + + + + + + + - - + + + + + + + + + + + diff --git a/brand/logo-mark.svg b/brand/logo-mark.svg index 20ba90d..6f5801e 100644 --- a/brand/logo-mark.svg +++ b/brand/logo-mark.svg @@ -1,30 +1,61 @@ - AgentDispatch + AgentDispatch — spawn cloud agents - - + + + - + + + + + + - + + + + + + + - - - - + + + + + - - - + + + + + + + - - + + + + + + + + + + + + + + + + diff --git a/brand/profile-readme/profile/README.md b/brand/profile-readme/profile/README.md index b926678..a2fcf16 100644 --- a/brand/profile-readme/profile/README.md +++ b/brand/profile-readme/profile/README.md @@ -1,15 +1,15 @@

- AgentDispatch + AgentDispatch

-

The provider-neutral runtime for AI agents.

+

Spawn cloud agents from your AI.

- One contract. Any agent. Any cloud.
- Spawn long-running cloud agents from your CLI, your code, or any MCP client — without picking a provider for life. + Claude Code, OpenClaw, and Hermes plan brilliantly — and choke on multi-hour work.
+ AgentDispatch hands them a managed cloud runtime: one MCP call, results when they land.

@@ -22,78 +22,89 @@ --- -## Why AgentDispatch? +## The problem -Every agent runtime today ships its own API, its own worker contract, its own deployment story. Pick one and you're locked in. Switch providers and you rewrite orchestration code from scratch. +Local AI assistants — Claude Code, OpenClaw, Hermes — plan brilliantly. They get cramped the moment work gets long. A deep-research sweep, an account-wide audit, a multi-hour reasoning job: none of it belongs in a laptop's context window. -**AgentDispatch is the dispatch layer in between.** Write one integration. Point it at AWS Bedrock AgentCore today, plug in something else tomorrow — without touching the calling code. +## The fix -- 🧠 **Built for the agent era.** Long-running, stateful, multi-step tasks are first-class. -- 🧩 **Provider-neutral by design.** A small, stable capability + adapter contract. -- ⚡ **Three faces, one runtime.** CLI for humans, SDK for code, MCP server for AI assistants. -- 🪶 **Lightweight defaults.** SQLite store. stdio transport. Zero hidden services. -- 🔓 **Open.** Apache-2.0 across the stack. Adapter template included. - -## How it fits together +AgentDispatch is the one tool your local agent is missing: **spawn a cloud agent with this instruction, come back later for the result.** The run happens on managed cloud compute. Status, logs, and final output stream back over MCP. ``` - Humans Apps AI assistants - │ │ │ - ▼ ▼ ▼ - ┌─────┐ ┌─────────┐ ┌─────────────┐ - │ cli │ │ sdk-js │ │ mcp-server │ - └──┬──┘ └────┬────┘ └──────┬──────┘ - └─────────────────┼──────────────────────┘ - ▼ - ┌───────────────────┐ - │ core │ ← contracts + dispatch - └─────────┬─────────┘ - ┌───────────────┼────────────────┐ - ▼ ▼ ▼ - ┌──────────┐ ┌──────────┐ ┌──────────────────┐ - │ store │ │ adapter │ → │ worker (in cloud)│ - │ (sqlite) │ │ (aws) │ └──────────────────┘ - └──────────┘ └──────────┘ +spawn_cloud_agent({ instruction: "Audit every Lambda for public invoke." }) +// → task_id, then status / logs / result on demand ``` -## Start here +- ☁️ **Real cloud, not your laptop.** AWS Bedrock AgentCore today; bring your own cloud tomorrow. +- ⏱️ **Built for marathons.** Sync, session, or job mode — same API. +- 🔭 **Full visibility.** Status, logs, results, cancellation. +- 🪶 **Boring defaults.** SQLite, stdio, no hidden services. + +## Made for the agents you already use + +| Local assistant | What it gets | +| --- | --- | +| 🤖 **Claude Code** | A cloud companion for parallel audits, long refactors, and deep-research sweeps. | +| 🦅 **OpenClaw** | Offloads multi-step research and tool-rich runs to a managed cloud worker. | +| 🪽 **Hermes** | Runs long-context reasoning and hours-long jobs without leaving the chat. | +| Claude Desktop · Cursor · Continue · Goose · Zed | Same MCP config, same primitive. | + +## Three faces, one runtime -Most people want one of these three: +- **MCP server** — for AI assistants ([`mcp-server`](https://github.com/agent-dispatch/mcp-server)). +- **TypeScript SDK** — for your own application code ([`sdk-js`](https://github.com/agent-dispatch/sdk-js)). +- **CLI** — for operators and scripts ([`cli`](https://github.com/agent-dispatch/cli)). -- **AI assistant control plane** — wire [`mcp-server`](https://github.com/agent-dispatch/mcp-server) into Claude Desktop / Cursor / Claude Code and your model can spawn cloud agents on demand. -- **From your own app** — install [`sdk-js`](https://github.com/agent-dispatch/sdk-js) and call `client.spawnCloudAgent({...})`. -- **From your terminal** — `npx @agent-dispatch/cli spawn "..."` and watch it run. +All three call into the same dispatcher and share the same runtime profiles. -```bash -npm install \ - @agent-dispatch/core \ - @agent-dispatch/mcp-server \ - @agent-dispatch/store-sqlite \ - @agent-dispatch/adapter-aws-agentcore +## How it fits together + +``` + Claude Code · OpenClaw · Hermes + │ MCP + ▼ + ┌───────────────────┐ + │ AgentDispatch │ ← spawn / status / logs / result / cancel + └─────────┬─────────┘ + │ + ▼ + ┌───────────────────┐ + │ cloud adapter │ (AWS Bedrock AgentCore today) + └─────────┬─────────┘ + ▼ + ┌───────────────────┐ + │ cloud worker │ runs Strands · OpenClaw · Hermes · your framework + └───────────────────┘ ``` +The adapter contract is small and stable, so a new cloud (or a new framework) is a focused, well-scoped addition — not a rewrite. + ## Repositories | Repo | What it is | | --- | --- | +| [`mcp-server`](https://github.com/agent-dispatch/mcp-server) | **Start here.** MCP face for the runtime — the viral entry point. | | [`core`](https://github.com/agent-dispatch/core) | Runtime contracts and dispatch orchestration. The heart. | -| [`mcp-server`](https://github.com/agent-dispatch/mcp-server) | MCP face for the runtime. The viral entry point. | | [`sdk-js`](https://github.com/agent-dispatch/sdk-js) | TypeScript SDK for application code. | | [`cli`](https://github.com/agent-dispatch/cli) | Command-line interface for operators. | | [`store-sqlite`](https://github.com/agent-dispatch/store-sqlite) | Default SQLite + filesystem state store. | | [`adapter-aws-agentcore`](https://github.com/agent-dispatch/adapter-aws-agentcore) | AWS Bedrock AgentCore adapter. | -| [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore) | Standard AgentCore worker contract. | +| [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore) | Standard AgentCore worker contract (reference Strands / OpenClaw / Hermes workers live here). | | [`adapter-template`](https://github.com/agent-dispatch/adapter-template) | Starter for new cloud adapters. | | [`docs`](https://github.com/agent-dispatch/docs) | Documentation and guides. | -## Build your own adapter +## Build a new worker or adapter + +A new **framework worker** is a function that maps `{ instruction, context, framework, runtime_tools }` to a result envelope — see [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore). + +A new **cloud adapter** implements five methods (dispatch, status, logs, result, cancel) — fork [`adapter-template`](https://github.com/agent-dispatch/adapter-template). -Adding a new provider is meant to be a focused, well-scoped task. Fork [`adapter-template`](https://github.com/agent-dispatch/adapter-template), implement the five-method contract from [`core`](https://github.com/agent-dispatch/core), ship. +Open a discussion when you ship — we'd love to link it. ## Community - Issues and PRs welcome on any repo. -- Open a discussion on `docs` for questions, design ideas, or to share an adapter you've built. +- Architecture questions, framework integrations, and ideas → open a discussion in `docs`.

Apache-2.0 · Built by the AgentDispatch contributors diff --git a/brand/profile-readme/profile/assets/logo-mark-light.svg b/brand/profile-readme/profile/assets/logo-mark-light.svg index ba5664c..9316bf0 100644 --- a/brand/profile-readme/profile/assets/logo-mark-light.svg +++ b/brand/profile-readme/profile/assets/logo-mark-light.svg @@ -1,25 +1,50 @@ - AgentDispatch + AgentDispatch — spawn cloud agents - + + + + + - - - - + + + + + + + + + + + - - - + + + + + + + + - - + + + + + + + + + + + diff --git a/brand/profile-readme/profile/assets/logo-mark.svg b/brand/profile-readme/profile/assets/logo-mark.svg index 20ba90d..6f5801e 100644 --- a/brand/profile-readme/profile/assets/logo-mark.svg +++ b/brand/profile-readme/profile/assets/logo-mark.svg @@ -1,30 +1,61 @@ - AgentDispatch + AgentDispatch — spawn cloud agents - - + + + - + + + + + + - + + + + + + + - - - - + + + + + - - - + + + + + + + - - + + + + + + + + + + + + + + + + diff --git a/brand/profile-readme/profile/assets/wordmark-dark.svg b/brand/profile-readme/profile/assets/wordmark-dark.svg index 12fed29..ab2f606 100644 --- a/brand/profile-readme/profile/assets/wordmark-dark.svg +++ b/brand/profile-readme/profile/assets/wordmark-dark.svg @@ -1,38 +1,63 @@ - - AgentDispatch + + AgentDispatch — cloud agents for AI assistants - - + + + + + + + - + - - + + - + + + + + + + + + + + + + + - - - - + + + + + - - - + - - + + + + + + + + + + - AgentDispatch - PROVIDER-NEUTRAL RUNTIME FOR AI AGENTS + AgentDispatch + CLOUD AGENTS FOR AI ASSISTANTS diff --git a/brand/profile-readme/profile/assets/wordmark.svg b/brand/profile-readme/profile/assets/wordmark.svg index be70e6f..0e5b962 100644 --- a/brand/profile-readme/profile/assets/wordmark.svg +++ b/brand/profile-readme/profile/assets/wordmark.svg @@ -1,41 +1,63 @@ - - AgentDispatch + + AgentDispatch — cloud agents for AI assistants - - + + + + + + + - + - - + + - + + + + + + + + - - - - + + + + - - - + + + + + + - - - + - - AgentDispatch + + + + + + + + + + - PROVIDER-NEUTRAL RUNTIME FOR AI AGENTS + AgentDispatch + CLOUD AGENTS FOR AI ASSISTANTS diff --git a/brand/website/assets/favicon.svg b/brand/website/assets/favicon.svg index 20ba90d..6f5801e 100644 --- a/brand/website/assets/favicon.svg +++ b/brand/website/assets/favicon.svg @@ -1,30 +1,61 @@ - AgentDispatch + AgentDispatch — spawn cloud agents - - + + + - + + + + + + - + + + + + + + - - - - + + + + + - - - + + + + + + + - - + + + + + + + + + + + + + + + + diff --git a/brand/website/assets/og.svg b/brand/website/assets/og.svg index 10d25da..c6e0c42 100644 --- a/brand/website/assets/og.svg +++ b/brand/website/assets/og.svg @@ -1,23 +1,28 @@ - - AgentDispatch — provider-neutral runtime for AI agents + + AgentDispatch — spawn cloud agents from your AI assistant - - + + - - + + - - + + + + + + + - + @@ -27,30 +32,55 @@ - + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - AgentDispatch + AgentDispatch - Give your AI assistant - a fleet of cloud agents. + Spawn cloud agents + from your AI. - One contract. Any agent. Any cloud. + Claude Code, OpenClaw, and Hermes plan. AgentDispatch + runs the marathon — on managed cloud compute. + + + + Claude Code + + + OpenClaw + + + Hermes + - GITHUB.COM/AGENT-DISPATCH + GITHUB.COM/AGENT-DISPATCH diff --git a/brand/website/index.html b/brand/website/index.html index c0aa754..5405c7a 100644 --- a/brand/website/index.html +++ b/brand/website/index.html @@ -3,11 +3,11 @@ - AgentDispatch — provider-neutral runtime for AI agents - + AgentDispatch — spawn cloud agents from your AI + - - + + @@ -21,27 +21,38 @@ AgentDispatch

-
// Claude Desktop / Cursor / Claude Code
+        
// Claude Code / Claude Desktop / Cursor / any MCP client
 {
   "mcpServers": {
     "agentdispatch": {
@@ -138,7 +170,7 @@ 

Three faces, one runtime

const client = createClient({ configPath: "agentdispatch.config.json" }); const { taskId } = await client.spawnCloudAgent({ - instruction: "Audit our S3 buckets for public read.", + instruction: "Audit every Lambda in this account for public invoke.", runtime: "security-agent" }); @@ -149,7 +181,7 @@

Three faces, one runtime

$ npm install -g @agent-dispatch/cli
 
 $ agentdispatch check --config agentdispatch.config.json
-$ agentdispatch spawn "Summarise the latest release notes."
+$ agentdispatch spawn "Investigate this stack trace across all services."
 $ agentdispatch logs <task-id> --follow
 $ agentdispatch result <task-id>
@@ -158,8 +190,8 @@

Three faces, one runtime

How it fits together

- Callers issue tool calls. Core resolves a capability + adapter and persists the task. - The adapter invokes a worker on the target cloud. Status and logs flow back the same way. + Your local AI assistant calls a tool. AgentDispatch picks a capability, persists the task, + invokes a worker in the cloud, and streams status and logs back through the same path.

@@ -175,23 +207,28 @@

How it fits together

- - CLI - - SDK - - MCP server + + Claude Code + local assistant + + + OpenClaw + local assistant + + + Hermes + local assistant - + - + - - @agent-dispatch/core - runtime contracts · dispatch loop + + AgentDispatch (MCP server + core) + spawn · status · logs · result · cancel @@ -207,7 +244,8 @@

How it fits together

adapter · AWS AgentCore - worker · in the cloud + cloud worker + runs the long task
@@ -224,11 +262,11 @@

The stack

mcp-server entry point

-

MCP face for the runtime. Hand it to Claude, Cursor, or Claude Code.

+

The MCP face for the runtime. Hand it to Claude Code, OpenClaw, or Hermes.

core

-

Runtime contracts and dispatch orchestration. The heart of the stack.

+

Runtime contracts and the dispatch loop. The heart of the stack.

sdk-js

@@ -252,7 +290,7 @@

worker-agentcore

adapter-template

-

Starter scaffolding for new cloud adapters. Ship one in an afternoon.

+

Starter for new cloud adapters. Ship one in an afternoon.

docs

@@ -263,7 +301,7 @@

docs

Ready to dispatch?

-

Wire AgentDispatch into your assistant and watch the model fan out work it could never have done alone.

+

Wire AgentDispatch into your assistant and watch the model run work it could never finish on its own.

Start with the MCP server Read the docs → diff --git a/brand/website/styles.css b/brand/website/styles.css index 017d3c5..4b0caf7 100644 --- a/brand/website/styles.css +++ b/brand/website/styles.css @@ -159,6 +159,44 @@ section { padding: 72px 24px; } font-size: 17px; } +/* Made for */ +.made-for { background: linear-gradient(180deg, transparent, rgba(124,58,237,0.05), transparent); } +.agent-grid { + max-width: var(--maxw); + margin: 0 auto; + display: grid; + gap: 18px; + grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); +} +.agent-card { + background: var(--bg-card); + border: 1px solid var(--border); + border-radius: var(--radius-lg); + padding: 24px; + transition: transform .15s ease, border-color .15s ease, background .15s ease; +} +.agent-card:hover { + transform: translateY(-2px); + border-color: rgba(167, 139, 250, 0.45); +} +.agent-name { + font-size: 20px; + font-weight: 800; + letter-spacing: -0.01em; + background: linear-gradient(135deg, var(--accent-1), var(--accent-2)); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + margin-bottom: 8px; +} +.agent-card p { margin: 0; color: var(--text-muted); font-size: 15px; } +.footnote { + text-align: center; + color: var(--text-dim); + font-size: 14px; + margin-top: 28px; +} + /* Features */ .features-grid, .repo-grid { max-width: var(--maxw); diff --git a/brand/wordmark-dark.svg b/brand/wordmark-dark.svg index 12fed29..ab2f606 100644 --- a/brand/wordmark-dark.svg +++ b/brand/wordmark-dark.svg @@ -1,38 +1,63 @@ - - AgentDispatch + + AgentDispatch — cloud agents for AI assistants - - + + + + + + + - + - - + + - + + + + + + + + + + + + + + - - - - + + + + + - - - + - - + + + + + + + + + + - AgentDispatch - PROVIDER-NEUTRAL RUNTIME FOR AI AGENTS + AgentDispatch + CLOUD AGENTS FOR AI ASSISTANTS diff --git a/brand/wordmark.svg b/brand/wordmark.svg index be70e6f..0e5b962 100644 --- a/brand/wordmark.svg +++ b/brand/wordmark.svg @@ -1,41 +1,63 @@ - - AgentDispatch + + AgentDispatch — cloud agents for AI assistants - - + + + + + + + - + - - + + - + + + + + + + + - - - - + + + + - - - + + + + + + - - - + - - AgentDispatch + + + + + + + + + + - PROVIDER-NEUTRAL RUNTIME FOR AI AGENTS + AgentDispatch + CLOUD AGENTS FOR AI ASSISTANTS From 5aab69d200ca53e75a81b13d9017cf2a2cd1b693 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 11 May 2026 04:58:54 +0000 Subject: [PATCH 3/4] docs(brand): drop sibling repo README drafts Per request, do not ship READMEs for other org packages from this repo. Remove brand/proposed-readmes/ and trim the deployment guide accordingly. Org profile README and the marketing site remain. --- brand/README.md | 42 ++------- .../adapter-aws-agentcore/README.md | 65 -------------- .../adapter-template/README.md | 59 ------------- brand/proposed-readmes/cli/README.md | 59 ------------- brand/proposed-readmes/core/README.md | 86 ------------------- brand/proposed-readmes/docs/README.md | 54 ------------ brand/proposed-readmes/sdk-js/README.md | 70 --------------- brand/proposed-readmes/store-sqlite/README.md | 44 ---------- .../worker-agentcore/README.md | 64 -------------- 9 files changed, 8 insertions(+), 535 deletions(-) delete mode 100644 brand/proposed-readmes/adapter-aws-agentcore/README.md delete mode 100644 brand/proposed-readmes/adapter-template/README.md delete mode 100644 brand/proposed-readmes/cli/README.md delete mode 100644 brand/proposed-readmes/core/README.md delete mode 100644 brand/proposed-readmes/docs/README.md delete mode 100644 brand/proposed-readmes/sdk-js/README.md delete mode 100644 brand/proposed-readmes/store-sqlite/README.md delete mode 100644 brand/proposed-readmes/worker-agentcore/README.md diff --git a/brand/README.md b/brand/README.md index 9eb508f..e207af5 100644 --- a/brand/README.md +++ b/brand/README.md @@ -1,6 +1,6 @@ # AgentDispatch brand kit -This directory holds the proposed visual identity, org profile README, and marketing site for the AgentDispatch organization. Because this branch lives inside `mcp-server` and my publishing access is scoped to a single repo, everything is staged here for you to copy into the right destination repos. +This directory holds the visual identity, the org profile README, and the marketing site for the AgentDispatch organization. Because this branch lives inside `mcp-server` and my publishing access is scoped to a single repo, everything is staged here for you to copy into the right destination repos. ## Contents @@ -14,15 +14,6 @@ brand/ │ └── profile/ │ ├── README.md # the org profile README │ └── assets/ # SVGs the README references -├── proposed-readmes/ -│ ├── core/README.md -│ ├── sdk-js/README.md -│ ├── cli/README.md -│ ├── store-sqlite/README.md -│ ├── adapter-aws-agentcore/README.md -│ ├── worker-agentcore/README.md -│ ├── adapter-template/README.md -│ └── docs/README.md └── website/ # static site, no build step ├── index.html ├── styles.css @@ -51,7 +42,7 @@ The new `mcp-server` README (the viral entry point) is already in place at the r | Typeface | Inter (UI / docs), system-ui fallback | | Code typeface | ui-monospace / JetBrains Mono | -The logo mark is a **dispatch hub**: one inbound spoke (left), a glowing core, two outbound spokes (right) ending in nodes. It reads literally as "signal in → fan-out to agents" — the system's job in one shape. +The logo mark is a **cloud spawning agents**: a soft cloud silhouette (the dispatcher) with three short spokes fanning to three small agent tiles. It reads literally as "cloud → spawn agents" — the system's job in one shape. ## How to deploy each piece @@ -80,23 +71,7 @@ git push Within a minute of pushing, https://github.com/agent-dispatch will render the new profile. -### 3. Per-repo READMEs - -For every sibling package, copy the proposed README over the existing one (or merge — they were written to slot in cleanly): - -```bash -for repo in core sdk-js cli store-sqlite adapter-aws-agentcore worker-agentcore adapter-template docs; do - cp brand/proposed-readmes/$repo/README.md ../$repo/README.md -done -``` - -The proposed READMEs reference shared brand assets at -`https://raw.githubusercontent.com/agent-dispatch/.github/main/profile/assets/wordmark{,-dark}.svg`, -so deploy the `.github` repo first (step 2) and the images will resolve everywhere. - -> ⚠️ The proposed sibling READMEs are written to match each repo's stated purpose. Skim each one and customize package names, API examples, and command surfaces against what you've actually shipped before pushing. - -### 4. Website +### 3. Website The site is intentionally zero-build — three files plus an assets folder. @@ -123,14 +98,13 @@ Drag-drop the `brand/website` directory. It's all static — no framework, no bu Recommended: option B with a custom domain. Once live, update README hero links and the OG meta tags in `index.html` to point at the canonical URL. -### 5. Once everything is live +### 4. Once everything is live -Update three things, in order: +In order: 1. Set the org avatar (step 1). -2. Push the `.github` repo (step 2) — this also publishes the wordmark SVGs the other READMEs reference. -3. Push the per-repo READMEs (step 3). -4. Publish the website (step 4) and add the canonical URL to: +2. Push the `.github` repo (step 2) — this publishes the wordmark SVGs. +3. Publish the website (step 3) and add the canonical URL to: - the org profile README ("Learn more →") - the mcp-server README header - each repo's `package.json` `homepage` field @@ -139,7 +113,7 @@ Update three things, in order: If you want to tweak the logo, the two knobs that matter most: -- **Spoke angles.** Currently 0° left, ±28° on the right. Tighter (±15°) reads more focused; wider (±45°) reads more "broadcast". Edit the `x2`/`y2` coordinates in `logo-mark.svg`. +- **Spoke angles.** Currently 0° middle, ±28° on the right. Tighter (±15°) reads more focused; wider (±45°) reads more "broadcast". Edit the `x2`/`y2` coordinates in `logo-mark.svg`. - **Palette.** Violet→cyan is on-trend for AI tooling but easy to change — swap the gradient stops in the `` block. The whole brand follows from these two colors. That's the entire kit. Ping me if you want a horizontal social-media banner (1500×500 GitHub-org sized), an animated SVG variant, or a dark-mode preview screenshot of the site. diff --git a/brand/proposed-readmes/adapter-aws-agentcore/README.md b/brand/proposed-readmes/adapter-aws-agentcore/README.md deleted file mode 100644 index 8786d35..0000000 --- a/brand/proposed-readmes/adapter-aws-agentcore/README.md +++ /dev/null @@ -1,65 +0,0 @@ -

- - - AgentDispatch - -

- -

AWS Bedrock AgentCore adapter for AgentDispatch.

- -

- @agent-dispatch/adapter-aws-agentcore implements the AgentDispatch capability contract against Amazon Bedrock AgentCore. Drop it into your runtime and the rest of the stack (CLI, SDK, MCP) just works. -

- ---- - -## Install - -```bash -npm install @agent-dispatch/adapter-aws-agentcore @agent-dispatch/core -``` - -## What it does - -- Implements the `agent-runtime` capability for the `aws` provider. -- Supports session and job target modes. -- Invokes AgentCore runtimes by ARN + qualifier. -- Streams logs and results back into the configured store. - -## Configuration - -```json -{ - "accounts": { - "dev-aws": { - "provider": "aws", - "region": "us-west-2", - "credentialSource": "aws-sdk-default" - } - }, - "backends": { - "aws-agentcore": { - "provider": "aws", - "capability": "agent-runtime", - "adapter": "aws-agentcore", - "account": "dev-aws", - "details": { - "runtimeArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:agent/:1", - "qualifier": "DEFAULT" - } - } - } -} -``` - -`credentialSource: "aws-sdk-default"` uses the standard AWS SDK credential chain (env vars, profiles, instance metadata, etc.). - -## Requirements - -- An AWS account with Bedrock AgentCore enabled in the target region. -- An AgentCore runtime ARN you have permission to invoke. -- A worker contract compatible with [`@agent-dispatch/worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore). - -## License - -Apache-2.0. diff --git a/brand/proposed-readmes/adapter-template/README.md b/brand/proposed-readmes/adapter-template/README.md deleted file mode 100644 index d98710e..0000000 --- a/brand/proposed-readmes/adapter-template/README.md +++ /dev/null @@ -1,59 +0,0 @@ -

- - - AgentDispatch - -

- -

Ship an AgentDispatch adapter in an afternoon.

- -

- Fork this template, implement five methods, register your adapter — your runtime is now reachable from the CLI, the SDK, and every MCP client. -

- ---- - -## Why this exists - -Every new agent runtime today ships its own API. AgentDispatch hides that diversity behind one capability contract. To support a new provider you only need to bridge that contract — this template gives you the scaffolding. - -## What you get - -- A `package.json` with the right peer dependencies. -- A `src/index.ts` with the adapter factory signature. -- A typed skeleton for the `agent-runtime` capability. -- A `vitest` setup with a contract conformance test. -- A `CONTRIBUTING.md` aimed at adapter authors. - -## How to use it - -```bash -gh repo create my-org/agent-dispatch-adapter-mything \ - --template agent-dispatch/adapter-template --public - -cd agent-dispatch-adapter-mything -npm install -npm test -``` - -Then edit `src/index.ts` and implement: - -```ts -createMyThingAdapter(): Adapter { - return { - provider: "mything", - capabilities: [...], - async dispatch(task) { /* your provider call */ }, - async getStatus(taskId) { /* ... */ }, - async getLogs(taskId, cursor, limit) { /* ... */ }, - async getResult(taskId) { /* ... */ }, - async cancel(taskId) { /* ... */ } - }; -} -``` - -Open a discussion on the org when you publish — we'd love to link it. - -## License - -Apache-2.0. diff --git a/brand/proposed-readmes/cli/README.md b/brand/proposed-readmes/cli/README.md deleted file mode 100644 index dbc7ba9..0000000 --- a/brand/proposed-readmes/cli/README.md +++ /dev/null @@ -1,59 +0,0 @@ -

- - - AgentDispatch - -

- -

The AgentDispatch command line.

- -

- Spawn, inspect, and cancel cloud agents from your terminal — same runtime, same profiles as the SDK and MCP server. -

- ---- - -## Install - -```bash -npm install -g @agent-dispatch/cli -# or one-shot -npx @agent-dispatch/cli --help -``` - -## Common commands - -```bash -# Validate config -agentdispatch check --config agentdispatch.config.json - -# Spawn an agent with the default runtime profile -agentdispatch spawn "Summarize the latest release notes from our changelog." - -# Same, with an explicit runtime profile -agentdispatch spawn --runtime research-agent "Investigate this anomaly" - -# Lifecycle -agentdispatch status -agentdispatch logs --follow -agentdispatch result -agentdispatch cancel - -# Introspection -agentdispatch providers -agentdispatch capabilities --provider aws -agentdispatch accounts -``` - -## Output - -All commands support `--json` for machine-readable output. Otherwise the CLI prints a compact, syntax-highlighted view. - -## See also - -- [`@agent-dispatch/sdk`](https://github.com/agent-dispatch/sdk-js) — same operations, from code -- [`@agent-dispatch/mcp-server`](https://github.com/agent-dispatch/mcp-server) — same operations, from an MCP client - -## License - -Apache-2.0. diff --git a/brand/proposed-readmes/core/README.md b/brand/proposed-readmes/core/README.md deleted file mode 100644 index c148cf6..0000000 --- a/brand/proposed-readmes/core/README.md +++ /dev/null @@ -1,86 +0,0 @@ -

- - - AgentDispatch - -

- -

The provider-neutral core of AgentDispatch.

- -

- @agent-dispatch/core defines the runtime contracts — providers, capabilities, accounts, backends, runtime profiles — and the dispatch loop every other AgentDispatch package builds on. -

- -

- Install · - Concepts · - Usage · - The rest of the stack -

- ---- - -## What's in here - -- **`RuntimeService`** — the dispatch orchestrator. Resolves runtime profiles, validates capabilities, persists tasks, drives adapters. -- **Contracts** — `DispatchRequest`, `RuntimeProfile`, capability descriptors, task lifecycle types. -- **Errors** — `AgentDispatchError` with stable, structured error codes. - -If you're building an adapter, a store, a CLI, or an MCP server, this is the package you depend on. - -## Install - -```bash -npm install @agent-dispatch/core -``` - -## Concepts - -| Term | Meaning | -| --- | --- | -| **Provider** | A cloud or runtime ecosystem (`aws`, future: `azure`, `gcp`, `self-hosted`). | -| **Capability** | A typed contract a provider exposes (e.g. `agent-runtime` with task types `agent.run`). | -| **Account profile** | Named credentials + region scope. | -| **Backend** | A concrete deployment of a capability (e.g. an AgentCore runtime ARN). | -| **Runtime profile** | The high-level "what to run" preset: provider + account + capability + target + framework. | -| **Adapter** | The plug-in that fulfils a capability against a real cloud API. | -| **Store** | Pluggable state for tasks, logs, and results. | - -The dispatch loop, in one sentence: *pick a capability, pick an adapter, persist a task, invoke the worker, stream status and logs back.* - -## Usage - -Bootstrap a runtime from config and dispatch a task: - -```ts -import { createRuntimeService } from "@agent-dispatch/core"; -import { createSqliteStore } from "@agent-dispatch/store-sqlite"; -import { createAwsAgentCoreAdapter } from "@agent-dispatch/adapter-aws-agentcore"; - -const runtime = createRuntimeService({ - store: createSqliteStore({ stateDir: ".agentdispatch" }), - adapters: [createAwsAgentCoreAdapter()], - config: /* loaded from agentdispatch.config.json */ -}); - -const task = await runtime.dispatchTask({ - provider: "aws", - accountProfile: "dev-aws", - capability: "agent-runtime", - taskType: "agent.run", - target: { mode: "session" }, - input: { instruction: "summarise the latest CloudTrail anomalies" } -}); - -await runtime.getTaskStatus(task.taskId); -await runtime.getTaskLogs(task.taskId, 0, 100); -await runtime.getTaskResult(task.taskId); -``` - -## Building an adapter - -The adapter contract is intentionally small. See [`adapter-template`](https://github.com/agent-dispatch/adapter-template) for a starting point. - -## License - -Apache-2.0. diff --git a/brand/proposed-readmes/docs/README.md b/brand/proposed-readmes/docs/README.md deleted file mode 100644 index 910d2ab..0000000 --- a/brand/proposed-readmes/docs/README.md +++ /dev/null @@ -1,54 +0,0 @@ -

- - - AgentDispatch - -

- -

AgentDispatch documentation.

- -

- Guides, architecture notes, and reference material for AgentDispatch. -

- -

- Getting started · - Guides · - Reference · - All repos -

- ---- - -## Getting started - -- **5-minute quick start** — wire AgentDispatch into Claude Desktop and spawn your first cloud agent. -- **Concepts** — providers, capabilities, accounts, backends, runtime profiles. -- **Choosing a target mode** — sync, session, job. - -## Guides - -- Configure AWS Bedrock AgentCore from scratch. -- Wire AgentDispatch into Claude Desktop / Cursor / Claude Code. -- Compose runtime tools. -- Operate AgentDispatch in CI. - -## Reference - -- Config schema (`agentdispatch.config.json`). -- MCP tool schemas. -- SDK API. -- CLI commands. -- Adapter contract. -- Worker contract. -- Error codes. - -## See also - -- [`core`](https://github.com/agent-dispatch/core) · [`mcp-server`](https://github.com/agent-dispatch/mcp-server) · [`sdk-js`](https://github.com/agent-dispatch/sdk-js) · [`cli`](https://github.com/agent-dispatch/cli) -- [`adapter-aws-agentcore`](https://github.com/agent-dispatch/adapter-aws-agentcore) · [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore) · [`adapter-template`](https://github.com/agent-dispatch/adapter-template) -- [`store-sqlite`](https://github.com/agent-dispatch/store-sqlite) - -## License - -Apache-2.0. diff --git a/brand/proposed-readmes/sdk-js/README.md b/brand/proposed-readmes/sdk-js/README.md deleted file mode 100644 index afbb67c..0000000 --- a/brand/proposed-readmes/sdk-js/README.md +++ /dev/null @@ -1,70 +0,0 @@ -

- - - AgentDispatch - -

- -

TypeScript SDK for AgentDispatch.

- -

- @agent-dispatch/sdk is the ergonomic way to dispatch cloud agents from your app code. One client, every provider you have configured. -

- ---- - -## Install - -```bash -npm install @agent-dispatch/sdk @agent-dispatch/core -``` - -## Quick start - -```ts -import { createClient } from "@agent-dispatch/sdk"; - -const client = createClient({ configPath: "agentdispatch.config.json" }); - -const { taskId } = await client.spawnCloudAgent({ - instruction: "Find all functions over 300 lines and propose split points.", - runtime: "code-review" -}); - -for await (const event of client.streamTask(taskId)) { - console.log(event); -} - -const result = await client.getTaskResult(taskId); -``` - -## Features - -- **Typed end-to-end** — request/response types come from [`@agent-dispatch/core`](https://github.com/agent-dispatch/core). -- **Sync, session, and job modes** — same client API regardless of target mode. -- **Streaming** — async iterator over status + log events. -- **Cancellation** — built on `AbortSignal`. - -## API surface - -```ts -client.spawnCloudAgent(input) -client.dispatchTask(request) -client.getTaskStatus(taskId) -client.getTaskLogs(taskId, { cursor, limit }) -client.getTaskResult(taskId) -client.cancelTask(taskId) -client.streamTask(taskId) // async iterable -client.listProviders() -client.listCapabilities(provider?) -client.listAccountProfiles() -``` - -## See also - -- [`@agent-dispatch/mcp-server`](https://github.com/agent-dispatch/mcp-server) — same surface, exposed over MCP -- [`@agent-dispatch/cli`](https://github.com/agent-dispatch/cli) — same surface, from your terminal - -## License - -Apache-2.0. diff --git a/brand/proposed-readmes/store-sqlite/README.md b/brand/proposed-readmes/store-sqlite/README.md deleted file mode 100644 index f8029ea..0000000 --- a/brand/proposed-readmes/store-sqlite/README.md +++ /dev/null @@ -1,44 +0,0 @@ -

- - - AgentDispatch - -

- -

SQLite + filesystem state store for AgentDispatch.

- -

- @agent-dispatch/store-sqlite is the default, zero-config store. Tasks and metadata live in SQLite; logs and large results live as files under a state directory. -

- ---- - -## Install - -```bash -npm install @agent-dispatch/store-sqlite @agent-dispatch/core -``` - -## Usage - -```ts -import { createSqliteStore } from "@agent-dispatch/store-sqlite"; -import { createRuntimeService } from "@agent-dispatch/core"; - -const store = createSqliteStore({ stateDir: ".agentdispatch" }); -const runtime = createRuntimeService({ store, adapters: [...], config }); -``` - -The store will create `/state.db` and a `logs/` directory on first use. - -## Why SQLite - -- **No infrastructure.** Single file. Works on a laptop, in CI, and on a server. -- **Transactional.** Task state transitions are atomic. -- **Inspectable.** It's just SQLite — `sqlite3 .agentdispatch/state.db` and you can read everything. - -For larger deployments, implement the `Store` contract from [`@agent-dispatch/core`](https://github.com/agent-dispatch/core) against Postgres, DynamoDB, or your store of choice. - -## License - -Apache-2.0. diff --git a/brand/proposed-readmes/worker-agentcore/README.md b/brand/proposed-readmes/worker-agentcore/README.md deleted file mode 100644 index 82c2c95..0000000 --- a/brand/proposed-readmes/worker-agentcore/README.md +++ /dev/null @@ -1,64 +0,0 @@ -

- - - AgentDispatch - -

- -

The standard worker contract for AgentCore agents.

- -

- @agent-dispatch/worker-agentcore defines the request and response shapes AgentDispatch dispatches into AgentCore — and a small runtime helper so you don't have to implement the framing yourself. -

- ---- - -## Install - -```bash -npm install @agent-dispatch/worker-agentcore -``` - -## The contract - -Inbound (from AgentDispatch → worker): - -```jsonc -{ - "instruction": "string", - "context": { /* arbitrary */ }, - "framework": "strands" | "...", - "runtime_tools": { /* runtime-tool config */ } -} -``` - -Outbound (worker → AgentDispatch): - -```jsonc -{ - "status": "succeeded" | "failed", - "result": { /* arbitrary */ }, - "logs": [{ "ts": "...", "level": "info", "message": "..." }] -} -``` - -## Usage in a worker - -```ts -import { createWorker } from "@agent-dispatch/worker-agentcore"; - -export const handler = createWorker(async ({ instruction, context, runtimeTools }) => { - // your agent loop here - return { result: { answer: "..." } }; -}); -``` - -The helper: - -- Validates the inbound payload. -- Wires logs into the AgentCore output channel. -- Captures errors into the standard failure envelope. - -## License - -Apache-2.0. From 38aaf9e160496d3ca45abd14c44582adea83802e Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 11 May 2026 05:12:45 +0000 Subject: [PATCH 4/4] docs(brand): stop overclaiming cloud-side framework support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The framework field on spawn_cloud_agent and runtime profiles exists and is passed through to the worker (src/index.ts, src/schemas.ts) — but AgentDispatch doesn't interpret it. Whether a given framework string is "supported" depends entirely on what the worker handles. Today the reference worker (worker-agentcore) ships with Strands. Adjust copy accordingly: - README "Supported clients and frameworks" → split into "Supported clients" (Claude Code, OpenClaw, Hermes, etc. — all MCP clients, accurate) and "What the cloud agent runs" (Strands ships today; any other framework works once your worker handles it). - Config example: framework "openclaw" → "strands" (truthful working example). - Architecture step 5 acknowledges only Strands ships today. - Org profile diagram caption: "runs Strands · OpenClaw · Hermes · your framework" → "runs Strands today · your framework next". - worker-agentcore table row: drop the "reference OpenClaw / Hermes workers live here" claim. - Website hero badge: "Strands · OpenClaw · Hermes" → "Strands today · BYO framework". OpenClaw and Hermes stay throughout the docs as **local MCP clients** (the actual use case), which is correct. --- README.md | 29 +++++++++++--------------- brand/profile-readme/profile/README.md | 4 ++-- brand/website/index.html | 2 +- 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 2ad9bd8..2f5157b 100644 --- a/README.md +++ b/README.md @@ -76,25 +76,20 @@ get_task_result({ task_id: "task_..." }) All tool inputs are validated with [Zod](https://zod.dev). See [`src/schemas.ts`](src/schemas.ts) for the exact shapes. -## Supported clients and frameworks +## Supported clients -**Clients** — anything that speaks MCP: +Anything that speaks MCP. The common ones today: -- 🤖 **Claude Code** — wire it into `~/.claude/mcp_settings.json` (or your project's `.mcp.json`). -- 🦅 **OpenClaw** — add it to your MCP server list and use `spawn_cloud_agent` from inside any task. +- 🤖 **Claude Code** — add it to `~/.claude/mcp_settings.json` (or your project's `.mcp.json`). +- 🦅 **OpenClaw** — add it to your MCP server list and call `spawn_cloud_agent` from inside any task. - 🪽 **Hermes** — same wire-up; long-running reasoning and tool-rich runs move to the cloud. -- Claude Desktop, Cursor, Continue, Goose, Zed — same JSON, different file. +- Claude Desktop, Cursor, Continue, Goose, Zed — same JSON, different config file. -**Frameworks the cloud agent can run** — set the `framework` field on a runtime profile: +## What the cloud agent runs -| Framework | Use | -| --- | --- | -| `strands` | Agentic loop with tool use, built for AgentCore. | -| `openclaw` | Cloud OpenClaw worker — your local OpenClaw delegates the heavy run. | -| `hermes` | Cloud Hermes worker for long-context reasoning. | -| _your-framework_ | `framework` is a string; whatever your worker understands. | +`spawn_cloud_agent` and `dispatch_task` both accept an optional `framework` string, and runtime profiles carry a default. The value travels through to the worker — **AgentDispatch doesn't interpret it; the worker does.** That means you can wire any agent framework that your worker knows how to instantiate. -Frameworks aren't hard-coded into AgentDispatch — the value travels through to the worker, which decides what to run. The packages above ship reference workers in [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore). +Today the reference worker in [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore) ships with **Strands** support. Other frameworks (your own agent loop, an OpenClaw-style runner, a Hermes-style long-context worker) become available the moment your worker handles their `framework` value. There's no allow-list in AgentDispatch itself. ## Quick start @@ -151,12 +146,12 @@ The defaults come from your runtime profile — provider, account, backend, targ 2. **MCP server** validates input, hydrates defaults from a runtime profile, calls the core runtime. 3. **Core** picks the right capability + adapter, persists the task, dispatches. 4. **Adapter** invokes the worker in your cloud — synchronous, session, or job target mode. -5. **Worker** runs the actual framework (Strands / OpenClaw / Hermes / your own) on managed cloud infrastructure. +5. **Worker** runs an agent framework on managed cloud infrastructure. The reference worker in [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore) ships with Strands; add support for any other framework by handling its `framework` string. 6. Status, logs, and results flow back through the same path. ## Configuration -Minimal AWS Bedrock AgentCore (session mode) for an OpenClaw-style research agent: +Minimal AWS Bedrock AgentCore (session mode): ```json { @@ -187,7 +182,7 @@ Minimal AWS Bedrock AgentCore (session mode) for an OpenClaw-style research agen "capability": "agent-runtime", "backend": "aws-agentcore", "target": { "mode": "session" }, - "framework": "openclaw", + "framework": "strands", "runtimeTools": { "enabled": ["web-search", "code-interpreter"] } } }, @@ -197,7 +192,7 @@ Minimal AWS Bedrock AgentCore (session mode) for an OpenClaw-style research agen } ``` -Once `defaults.runtime` is set, `spawn_cloud_agent` only needs an `instruction`. Switch the `framework` field to run Strands, Hermes, or your own worker contract. +Once `defaults.runtime` is set, `spawn_cloud_agent` only needs an `instruction`. The `framework` value is passed straight through to the worker — change it to any string your worker recognises. Validate the wiring before connecting an MCP client: diff --git a/brand/profile-readme/profile/README.md b/brand/profile-readme/profile/README.md index a2fcf16..fe86818 100644 --- a/brand/profile-readme/profile/README.md +++ b/brand/profile-readme/profile/README.md @@ -73,7 +73,7 @@ All three call into the same dispatcher and share the same runtime profiles. └─────────┬─────────┘ ▼ ┌───────────────────┐ - │ cloud worker │ runs Strands · OpenClaw · Hermes · your framework + │ cloud worker │ runs Strands today · your framework next └───────────────────┘ ``` @@ -89,7 +89,7 @@ The adapter contract is small and stable, so a new cloud (or a new framework) is | [`cli`](https://github.com/agent-dispatch/cli) | Command-line interface for operators. | | [`store-sqlite`](https://github.com/agent-dispatch/store-sqlite) | Default SQLite + filesystem state store. | | [`adapter-aws-agentcore`](https://github.com/agent-dispatch/adapter-aws-agentcore) | AWS Bedrock AgentCore adapter. | -| [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore) | Standard AgentCore worker contract (reference Strands / OpenClaw / Hermes workers live here). | +| [`worker-agentcore`](https://github.com/agent-dispatch/worker-agentcore) | Standard AgentCore worker contract. Reference Strands worker lives here; add your own framework by handling its `framework` string. | | [`adapter-template`](https://github.com/agent-dispatch/adapter-template) | Starter for new cloud adapters. | | [`docs`](https://github.com/agent-dispatch/docs) | Documentation and guides. | diff --git a/brand/website/index.html b/brand/website/index.html index 5405c7a..0ab210f 100644 --- a/brand/website/index.html +++ b/brand/website/index.html @@ -80,7 +80,7 @@

AWS Bedrock AgentCore MCP 1.x - Strands · OpenClaw · Hermes + Strands today · BYO framework Apache-2.0