@wnzzer/agentdock 0.1.19 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # AgentDock ⚓ — One canvas for your coding agents
1
+ # AgentDock
2
2
 
3
3
  <p align="center">
4
4
  <picture>
@@ -17,237 +17,232 @@
17
17
 
18
18
  <p align="center"><b>English</b> · <a href="README.zh-CN.md">简体中文</a></p>
19
19
 
20
- **Drive the official Claude Code and Codex from a browser — side by side.** AgentDock runs on the machine where your code lives — a laptop, a dev box, a server behind SSH — and gives every agent session, file, diff and terminal a place on one canvas you can split any way you like, from any browser, phone included. One `npm i -g`, one binary, no Docker.
20
+ AgentDock is a browser workspace for the official **Claude Code** and **Codex** CLIs. It runs on the machine where your code lives and puts agent sessions, files, Git diffs and terminals on one canvas you can split and dock, reachable from any browser, including a phone.
21
21
 
22
- [Why AgentDock](#why-agentdock) · [Install](#install) · [Quick start](#quick-start) · [Features](#features) · [How it fits together](#how-it-fits-together) · [Security](#security) · [Docs](#documentation) · [Releases](https://github.com/wnzzer/agentdock/releases)
22
+ It does not have its own agent. Codex is driven through its official `app-server` and Claude Code through its `stream-json` interface, so logins, models, hooks, `CLAUDE.md` and permission prompts all stay native.
23
23
 
24
24
  <p align="center">
25
- <img src="docs/assets/screenshot-canvas.png" alt="The AgentDock canvas: two agent sessions reading this repository to answer different questions, and Git changes with a diff bottom right." width="100%">
26
- <br><sub>Two agent sessions working side by side, with the Git diff right there. A real session against this repository.</sub>
25
+ <img src="docs/assets/screenshot-canvas.png" alt="The AgentDock canvas: two agent sessions side by side, and Git changes with a diff bottom right." width="100%">
27
26
  </p>
28
27
 
29
- ## Why AgentDock
28
+ - [Install](#install)
29
+ - [Quick start](#quick-start)
30
+ - [Commands](#commands)
31
+ - [Configuration](#configuration)
32
+ - [Remote access](#remote-access)
33
+ - [Features](#features)
34
+ - [Architecture](#architecture)
35
+ - [Security](#security)
36
+ - [Documentation](#documentation)
37
+ - [Development](#development)
30
38
 
31
- ### 1. The official clients, untouched — new models on day one
32
-
33
- AgentDock is **not another agent**, and not a reimplementation of one. Codex is driven through its official `app-server`; Claude Code through the CLI's own `stream-json` control interface. Logins, models, hooks, `CLAUDE.md` and permission prompts all stay native — AgentDock renders them as cards and forwards your decision, and it never answers one for you or reads a client's credentials. The reasoning is in [Product boundary](docs/product-boundary.md).
34
-
35
- That is why the model list is **asked of the client itself**: upgrade the client and new models such as Fable or Opus 5.5 show up in the menu. One that has not shown up yet can be used by typing its ID.
39
+ ## Install
36
40
 
37
- <p align="center">
38
- <img src="docs/assets/screenshot-models.png" alt="The model menu: Default, Opus, Fable, Sonnet and Haiku, all reported by the local Claude Code client, with a field for typing any model ID at the bottom." width="720">
39
- </p>
41
+ Requirements:
40
42
 
41
- ### 2. Many agents, one canvas
43
+ - Node.js 24 or newer
44
+ - [Claude Code](https://www.npmjs.com/package/@anthropic-ai/claude-code) and/or [Codex](https://www.npmjs.com/package/@openai/codex), installed on the same machine
42
45
 
43
- Recursive horizontal and vertical splits, drag-to-edge docking, centre-drop tabs, and `1:1` / `2×2` / `1:2:1` presets. Claude Code and Codex can work at the same time, sessions from different projects can sit side by side, and every file and Git pane stays bound to its own repository. **Closing a pane never ends its process**, and layouts live on the server, so another browser opens exactly what you left.
46
+ ```bash
47
+ npm install -g @wnzzer/agentdock
48
+ ```
44
49
 
45
- ### 3. A conversation you can read, not terminal scrollback
50
+ The package ships one prebuilt binary per platform, with the web client and native bridge inside it. It has no postinstall step, so `--ignore-scripts` works.
46
51
 
47
- Messages, folding tool cards, native approval and question cards, a context-usage ring and turn status at a glance. **Interrupt** and **End session** are separate actions; input is persisted before it is sent, so a dropped connection never runs anything twice. You can start typing while the client is still starting up.
52
+ | Platform | Architectures |
53
+ | -------- | ------------------------- |
54
+ | macOS | arm64, x64 |
55
+ | Linux | x64, arm64 (static musl) |
56
+ | Other | [Build from source](#development) |
48
57
 
49
- <p align="center">
50
- <img src="docs/assets/screenshot-chat.png" alt="The structured conversation view: folding tool cards, a native approval card and the composer with a context ring." width="100%">
51
- <br><sub>Tool cards and native approval cards. Rendered by the built-in read-only design lab from local fixtures — no client or model involved.</sub>
52
- </p>
58
+ Tarballs with `SHA256SUMS` are also attached to every [release](https://github.com/wnzzer/agentdock/releases).
53
59
 
54
- ### 4. Walk away from the desk, keep going on your phone
60
+ ## Quick start
55
61
 
56
- The browser is the client. With `agentdock --lan` or one SSH port forward, you can follow an agent, approve a permission and ask the next question from your phone; the composer and command list stay above the on-screen keyboard. The processes run on the host, so closing the page or losing the network changes nothing — come back and carry on.
62
+ ```bash
63
+ agentdock
64
+ ```
57
65
 
58
- <p align="center">
59
- <img src="docs/assets/screenshot-mobile.png" alt="The conversation view at phone width: messages, tool cards and the composer at the bottom." width="360">
60
- </p>
66
+ This starts the server in the background and prints its URL (by default **http://127.0.0.1:28789/**). In the browser:
61
67
 
62
- ### 5. Files and Git within reach
68
+ 1. **Pick a workspace**, which can be any existing directory on the host.
69
+ 2. **Reuse your sign-in.** Go to *Endpoint profiles → Import existing configuration*. It points at your existing `~/.claude` or `~/.codex` without copying credentials.
70
+ 3. **Create a session**, or use **Load existing session** to resume a native Claude Code or Codex conversation from this workspace.
71
+ 4. **Arrange the canvas** by dragging sessions, files, Git and terminals into splits and tabs.
63
72
 
64
- A lazy file tree, workspace-wide search that honours `.gitignore`, and `@path` completion in the composer; rendered Markdown, conflict-checked editing, and image / video / PDF previews. Git is a top-level pane: read the diff, stage per file and commit without switching to a terminal to check what the agent changed.
73
+ ## Commands
65
74
 
66
- <p align="center">
67
- <img src="docs/assets/screenshot-files.png" alt="A syntax-highlighted Rust source file next to the Git changes pane, whose diff shows edits to the README." width="100%">
68
- </p>
75
+ | Command | Description |
76
+ | ------------------- | -------------------------------------------------------------- |
77
+ | `agentdock` | Start the server in the background and wait until it responds |
78
+ | `agentdock --lan` | Same, but reachable from other machines on the network |
79
+ | `agentdock status` | Show whether it is running, its URL and the access token |
80
+ | `agentdock logs` | Print the background server's log |
81
+ | `agentdock restart` | Stop, then start again |
82
+ | `agentdock stop` | Stop the background server |
83
+ | `agentdock serve` | Run in the foreground (for systemd or another supervisor) |
84
+ | `agentdock init` | Create the state directory without starting anything |
69
85
 
70
- ### 6. Nothing to migrate, and your data stays yours
86
+ If a start fails, the command prints the reason from the log and exits with a non-zero code.
71
87
 
72
- *Endpoint profiles → Import existing configuration* references your existing `~/.claude` or `~/.codex`, so sessions reuse the login and settings you already have without copying a credential. Or create isolated custom endpoints whose API keys are stored only as `env:` references. All state lives in `~/.agentdock/` on your own machine, with no telemetry.
88
+ ## Configuration
73
89
 
74
- ## Install
90
+ All state is stored in `~/.agentdock/` (SQLite database, settings, logs). There is no telemetry.
75
91
 
76
- Requires **Node.js 24+**, plus [Claude Code](https://www.npmjs.com/package/@anthropic-ai/claude-code) and/or [Codex](https://www.npmjs.com/package/@openai/codex) installed on the same machine.
92
+ Settings are read from `~/.agentdock/config.toml`. An environment variable with the same meaning takes precedence over the file.
77
93
 
78
- ```bash
79
- npm install -g @wnzzer/agentdock # or try it once: npx @wnzzer/agentdock
94
+ ```toml
95
+ lan = true # same as --lan
96
+ port = 28789 # or addr = "192.168.0.9:28789"
97
+ token = "..." # access token (AGENTDOCK_TOKEN)
98
+ allowed-origins = ["https://dock.example.com"]
80
99
  ```
81
100
 
82
- One prebuilt binary per platform, with the web client and the native bridge inside it. npm downloads only the one matching your machine through `os`/`cpu` on optional dependencies; there is no postinstall step, so `--ignore-scripts` installs work.
101
+ Commonly used environment variables:
83
102
 
84
- | Platform | Prebuilt |
85
- | -------- | --------------------------- |
86
- | macOS | arm64 · x64 |
87
- | Linux | x64 · arm64 (static musl) |
88
- | Other | [build from source](#development) |
103
+ | Variable | Purpose |
104
+ | --------------------------- | -------------------------------------------------- |
105
+ | `AGENTDOCK_HOME` | State directory (default `~/.agentdock`) |
106
+ | `AGENTDOCK_ADDR` | Listen address (default `127.0.0.1:28789`) |
107
+ | `AGENTDOCK_TOKEN` | Access token; required for non-loopback binds |
108
+ | `AGENTDOCK_ALLOWED_ORIGINS` | Extra allowed browser origins, comma-separated |
109
+ | `AGENTDOCK_CLAUDE_BIN` | Absolute path to `claude` |
110
+ | `AGENTDOCK_CODEX_BIN` | Absolute path to `codex` |
89
111
 
90
- Not using npm? Every [release](https://github.com/wnzzer/agentdock/releases) attaches tarballs with a `SHA256SUMS`.
112
+ API keys for custom endpoint profiles are stored only as references such as `env:AGENTDOCK_SECRET_WORK`, and the backend resolves them when a session launches. For the full list, see [Configuration](docs/configuration.md) and [Endpoint profiles](docs/endpoint-profiles.md).
91
113
 
92
- ## Quick start
114
+ ## Remote access
93
115
 
94
- ```bash
95
- agentdock # starts in the background and prints its URL
96
- ```
116
+ By default AgentDock listens only on loopback. There are three ways to reach it from another device:
97
117
 
98
- Open **http://127.0.0.1:28789/**, then:
118
+ - **SSH port forwarding** is the recommended option on networks you do not control:
99
119
 
100
- 1. **Pick a workspace** — any existing directory on the host.
101
- 2. **Reuse your sign-in** — *Endpoint profiles → Import existing configuration* references your existing `~/.claude` or `~/.codex`, so new sessions use the login, model and settings you already have. Nothing is copied.
102
- 3. **Create a session**, or **Load existing session** to resume a native Claude Code / Codex conversation that belongs to this workspace.
103
- 4. **Arrange the canvas** — drag sessions, files, Git and terminals into splits and tabs.
120
+ ```bash
121
+ ssh -L 28789:127.0.0.1:28789 user@server
122
+ ```
104
123
 
105
- `agentdock` behaves as a gateway: it starts a detached server, waits until that server actually answers, and returns your shell. A failed start prints the reason from the log and exits non-zero instead of leaving a silent process.
124
+ - **`agentdock --lan`** binds every interface and issues an access token. Traffic is plain HTTP, so use it only on a trusted network.
125
+ - **An HTTPS reverse proxy** must preserve `Host` and WebSocket upgrades, and its hostname must be listed in `AGENTDOCK_ALLOWED_ORIGINS`.
106
126
 
107
- ```bash
108
- agentdock status # URL, state and access token
109
- agentdock logs
110
- agentdock restart
111
- agentdock stop
112
- agentdock serve # foreground — what systemd or another supervisor should run
113
- ```
127
+ See [Security and boundaries](docs/security.md#private-remote-access) for details.
114
128
 
115
129
  ## Features
116
130
 
117
- ### 🧩 A canvas that docks anything
131
+ **Canvas**
118
132
 
119
- - Recursive horizontal/vertical splits, drag-to-edge docking, centre-drop tabs, resize with ratio snapping, `1:1` / `2×2` / `1:2:1` presets, maximize and restore.
120
- - Panes squeezed below 280×180 fold into tabs without overwriting the saved layout, and come back when there is room.
121
- - One shared canvas across every workspace: sessions from different projects sit side by side, while each file and Git pane stays bound to its own repository.
122
- - Closing a pane never ends its process. Layouts persist server-side with compare-and-swap, so two browsers cannot silently overwrite each other.
133
+ - Recursive horizontal and vertical splits, drag-to-edge docking, tabs, and `1:1` / `2×2` / `1:2:1` presets.
134
+ - Sessions from different projects can share one canvas. Each file and Git pane stays bound to its own repository.
135
+ - Closing a pane never ends its process. Layouts are saved on the server, so another browser opens the same layout.
123
136
 
124
- ### 🤖 Official agents, structured
137
+ **Agent sessions**
125
138
 
126
- - Messages, folding tool cards, native approval and question cards, usage, context ring and turn status — with **Interrupt** kept separate from a confirmed **End session**.
127
- - Searchable model picker and reasoning effort, forwarded to each client's native flags. Claude Code's plan mode passes through as-is; where Codex has no equivalent, the option is refused rather than faked.
128
- - Resume native history per workspace with fuzzy search. Legacy PTY sessions and optional host terminals remain available, and a live PTY is never silently taken over by structured chat.
129
- - Disconnects keep processes alive. Process state and stream state are shown separately, and input is persisted before dispatch and never replayed after an uncertain outcome.
139
+ - Structured conversation view with tool cards, native approval and question cards, a context-usage indicator and turn status.
140
+ - The model list comes from the installed client, so new models appear when you upgrade it. You can also type any model ID.
141
+ - Reasoning effort and Claude Code plan mode are passed to each client's native flags.
142
+ - Native session history can be resumed per workspace.
143
+ - **Interrupt** and **End session** are separate actions. Input is saved before it is sent and is never replayed after a disconnect.
130
144
 
131
- ### 📁 Files and Git, first-class
145
+ **Files and Git**
132
146
 
133
- - Lazy file tree with keyboard navigation, workspace-wide search that honours `.gitignore`, and `@path` completion in the composer.
134
- - Syntax highlighting behind the editor, rendered Markdown with source one click away, conflict-checked saves, and image / video / audio / PDF previews. Grammars load on demand.
135
- - Git status and diff, staged/unstaged groups, per-file and all-file staging, unstaging and explicit commits — a top-level pane, not an editor afterthought.
147
+ - File tree, workspace search that respects `.gitignore`, and `@path` completion in the composer.
148
+ - Syntax-highlighted editing with conflict-checked saves, plus rendered Markdown and image, video, audio and PDF previews.
149
+ - Git pane with status, diff, per-file stage/unstage and commit.
136
150
 
137
- ### 🔐 Accounts, profiles and environment
151
+ **Accounts and environment**
138
152
 
139
- - Reference the host's existing Claude Code / Codex configuration, or create isolated custom endpoint profiles with their own model and permission intent. Profile edits affect future sessions only.
140
- - API keys are **references** such as `env:AGENTDOCK_SECRET_WORK`, resolved on the backend at launch — never typed into a form, never stored in SQLite.
141
- - Per-session environment overlays with literal, secret-reference and explicit-unset entries; names that look like credentials are refused as literals.
142
- - Official-account management through the official client APIs: Codex browser/device login, refresh, logout and quota; Claude usage read from the official endpoint. See [official account boundaries](docs/official-accounts.md).
153
+ - Import the host's Claude Code or Codex configuration, or create isolated custom endpoint profiles.
154
+ - Per-session environment variables, supporting literal values, secret references and explicit unset.
155
+ - Official account login and usage through each client's official API. See [Official accounts](docs/official-accounts.md).
143
156
 
144
- ### 🌐 Yours to reach
157
+ **Access**
145
158
 
146
- - Loopback by default. `agentdock --lan` binds every interface and issues an access token; Host / Origin / CSRF checks stay on either way.
147
- - Chinese and English UI, with responsive layouts down to narrow screens.
148
- - State lives in `~/.agentdock/` on your hardware: SQLite in WAL mode, `0700` configuration directories, and no telemetry.
159
+ - Responsive layout that works on phones.
160
+ - English and Chinese UI.
149
161
 
150
- ## How it fits together
162
+ ## Architecture
151
163
 
152
164
  ```text
153
165
  Browser ── Vue 3 canvas: sessions · files · Git · terminals
154
166
  │ HTTP + WebSocket, same origin
155
167
  ▼
156
168
  agentdock-server (Rust) ─────────────── SQLite (WAL) · ~/.agentdock
157
- ├─ workspace / file / Git services paths canonicalised inside the workspace root
158
- ├─ PTY supervisor ──────────────────▶ host shell · legacy CLI sessions
169
+ ├─ workspace / file / Git services
170
+ ├─ PTY supervisor ──────────────────▶ host shell
159
171
  └─ native bridge (Node, JSONL)
160
172
  ├─ codex app-server ──────────▶ official Codex
161
173
  └─ claude stream-json ────────▶ official Claude Code
162
174
  ```
163
175
 
164
- - The **server** owns protocol, auth, persistence and process supervision. It never executes an agent loop.
165
- - The **native bridge** is a bounded Node subprocess that maps each client's official structured interface onto versioned session events. That is why Node is a requirement rather than an extra.
166
- - The **layout engine** is the product core: agents, editors, Git and terminals are all just pane kinds, so new capabilities register as panes instead of reshaping the app.
167
-
168
- More in [Architecture](docs/architecture.md) and [Structured agent UI](docs/structured-agent-ui.md).
169
-
170
- ## Remote access
171
-
172
- ```bash
173
- agentdock --lan # binds all interfaces, prints an access token
174
- ```
175
-
176
- Traffic is plain HTTP, so on a network you do not control prefer SSH port forwarding —
176
+ - **Server (Rust)** handles the protocol, authentication, persistence and process supervision. It does not run an agent loop.
177
+ - **Native bridge (Node)** maps each client's official interface to versioned session events, which is why Node is required.
178
+ - **Layout engine** treats agents, editors, Git and terminals as pane types.
177
179
 
178
- ```bash
179
- ssh -L 28789:127.0.0.1:28789 user@server
180
- ```
181
-
182
- — or put an HTTPS reverse proxy in front that preserves `Host` and WebSocket upgrades, and list its hostname in `AGENTDOCK_ALLOWED_ORIGINS`. Details in [Security and boundaries](docs/security.md#private-remote-access).
180
+ See [Architecture](docs/architecture.md) and [Structured agent UI](docs/structured-agent-ui.md).
183
181
 
184
182
  ## Security
185
183
 
186
- AgentDock is a **single trusted user's host workspace, not a multi-tenant sandbox.**
184
+ AgentDock is a workspace for **a single trusted user**. It is not a multi-tenant sandbox.
187
185
 
188
- - Anyone who can reach the API has the authority of the user running the server. Treat the access token as that user's credentials.
189
- - File access is confined to workspace roots: paths are canonicalised, `.git`, `.agentdock` and client configuration files are refused, and deletion never follows a symlink out of the tree.
190
- - **Agent processes are not confined by any of that.** `claude` and `codex` run with your full user permissions; what they can reach is decided by their own permission settings, not by this server.
191
- - A non-loopback bind refuses to start without a token of 24+ characters, and Origin/Host must be allow-listed.
186
+ - Anyone who can reach the API has the permissions of the user running the server. Protect the access token like that user's credentials.
187
+ - File access is limited to workspace roots. `.git`, `.agentdock` and client configuration files are refused, and deletion never follows symlinks.
188
+ - **Agent processes are not sandboxed.** `claude` and `codex` run with your full user permissions, limited only by their own permission settings.
189
+ - A non-loopback bind won't start without a token of at least 24 characters, and Origin and Host must be on the allow-list.
192
190
 
193
- Read [Security and boundaries](docs/security.md) and [Permission boundary](docs/permission-boundary.md) before exposing it beyond localhost.
191
+ Read [Security and boundaries](docs/security.md) and [Permission boundary](docs/permission-boundary.md) before exposing AgentDock beyond localhost.
194
192
 
195
193
  ## Documentation
196
194
 
197
- | Goal | Start here |
198
- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
199
- | Configure state, credentials and environment | [Configuration](docs/configuration.md) · [Endpoint profiles](docs/endpoint-profiles.md) |
200
- | Sign in with official accounts | [Official accounts](docs/official-accounts.md) |
201
- | Understand sessions, history and the canvas | [Sessions and the shared canvas](docs/sessions-and-canvas.md) · [Structured agent UI](docs/structured-agent-ui.md) |
202
- | Expose it safely | [Security and boundaries](docs/security.md) · [Permission boundary](docs/permission-boundary.md) |
203
- | Integrate or script against it | [API contract](docs/api.md) |
204
- | See how it is built, and why | [Architecture](docs/architecture.md) · [Product boundary](docs/product-boundary.md) · [UI design](docs/ui-design.md) |
205
- | Upgrade a running install | [Settings and update](docs/settings-update.md) |
206
- | Check what has actually been verified | [Acceptance record](docs/mvp-status.md) |
195
+ | Topic | Documents |
196
+ | -------------------------------------- | -------------------------------------------------------------------------------------------------- |
197
+ | Configuration, credentials, environment | [Configuration](docs/configuration.md) · [Endpoint profiles](docs/endpoint-profiles.md) |
198
+ | Official accounts | [Official accounts](docs/official-accounts.md) |
199
+ | Sessions and the canvas | [Sessions and the shared canvas](docs/sessions-and-canvas.md) · [Structured agent UI](docs/structured-agent-ui.md) |
200
+ | Security | [Security and boundaries](docs/security.md) · [Permission boundary](docs/permission-boundary.md) |
201
+ | HTTP API | [API contract](docs/api.md) |
202
+ | Design | [Architecture](docs/architecture.md) · [Product boundary](docs/product-boundary.md) · [UI design](docs/ui-design.md) |
203
+ | Upgrading | [Settings and update](docs/settings-update.md) |
207
204
 
208
205
  ## Development
209
206
 
210
- A Cargo workspace plus a pnpm workspace: Rust stable 1.89+, Node.js 24+ and pnpm 10.30.3.
207
+ Requirements: Rust stable 1.89+, Node.js 24+, pnpm 10.30.3.
211
208
 
212
209
  ```bash
213
210
  git clone https://github.com/wnzzer/agentdock.git
214
211
  cd agentdock
215
212
  pnpm install --frozen-lockfile
216
- pnpm run dev # Cargo + Vite → http://127.0.0.1:5173/
213
+ pnpm run dev # → http://127.0.0.1:5173/
217
214
  ```
218
215
 
219
- Production-style run and the full gate:
216
+ Run a production build locally:
220
217
 
221
218
  ```bash
222
- pnpm run build:web && cargo run -p agentdock-server # → http://127.0.0.1:28789/
219
+ pnpm run build:web && cargo run -p agentdock-server # → http://127.0.0.1:28789/
220
+ ```
223
221
 
222
+ Run the checks before submitting changes:
223
+
224
+ ```bash
224
225
  cargo fmt --all -- --check
225
226
  cargo clippy --workspace --all-targets -- -D warnings
226
227
  cargo test --workspace
227
228
  pnpm run check
228
229
  ```
229
230
 
230
- | Path | What lives there |
231
- | ------------------------ | ----------------------------------------------------------- |
231
+ | Path | Contents |
232
+ | ------------------------ | ------------------------------------------------------------ |
232
233
  | `crates/server` | HTTP/WebSocket API, daemon, security, accounts, workspace IO |
233
- | `crates/agent-runtime` | Process and PTY supervision |
234
- | `crates/persistence` | SQLite store and migrations (`migrations/`) |
235
- | `crates/domain` | Shared domain model |
236
- | `packages/native-bridge` | Node JSONL bridge to Claude Code and Codex |
237
- | `packages/protocol` | DTOs and the layout model shared with the client |
238
- | `apps/web` | Vue 3 + TypeScript client and the layout engine |
239
- | `npm/` | Packaging for `@wnzzer/agentdock` and its platform packages |
240
-
241
- See [Development](docs/development.md) for the dev loop, the read-only UI preview and deployment cautions.
242
-
243
- ## Status
244
-
245
- AgentDock is an **MVP under active development**. It has been run locally on macOS; Linux is a CI build target, not yet a claim of a completed deployment. Implementation and fixture coverage do not mean every live provider or account flow has been exercised — what has actually been verified, and what has not, is written down in the [acceptance record](docs/mvp-status.md).
234
+ | `crates/agent-runtime` | Process and PTY supervision |
235
+ | `crates/persistence` | SQLite store and migrations (`migrations/`) |
236
+ | `crates/domain` | Shared domain model |
237
+ | `packages/native-bridge` | Node JSONL bridge to Claude Code and Codex |
238
+ | `packages/protocol` | DTOs and layout model shared with the client |
239
+ | `apps/web` | Vue 3 + TypeScript client and layout engine |
240
+ | `npm/` | Packaging for `@wnzzer/agentdock` and platform packages |
246
241
 
247
- Deliberately out of scope for now: a custom agent loop, a provider reverse proxy, strong cross-process credential isolation, hunk-level staging, Git network/PR workflows, LSP and desktop control.
242
+ See [Development](docs/development.md) for more.
248
243
 
249
244
  ## License
250
245
 
251
- [MIT](LICENSE). Bundled third-party material is listed in [third-party notices](docs/third-party-notices.md).
246
+ [MIT](LICENSE). Third-party material is listed in [third-party notices](docs/third-party-notices.md).
252
247
 
253
- Claude Code and Codex are products of Anthropic and OpenAI respectively. AgentDock is an independent project that launches the official clients you install yourself; it is not affiliated with or endorsed by either company.
248
+ Claude Code and Codex are products of Anthropic and OpenAI respectively. AgentDock is an independent project and is not affiliated with or endorsed by either company.
@@ -23,3 +23,50 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
23
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
24
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
25
  SOFTWARE.
26
+
27
+
28
+ # Symbols Nerd Font Mono
29
+
30
+ `apps/web/src/assets/fonts/symbols-nerd-font-mono.woff2` is `SymbolsNerdFontMono-Regular.ttf` from [Nerd Fonts](https://github.com/ryanoasis/nerd-fonts) v3.5.1 (`NerdFontsSymbolsOnly`), converted to WOFF2 without other changes. It is used only as a fallback font for shell-prompt icons in the terminal pane.
31
+
32
+ The patcher and font are MIT licensed (below). The glyphs come from the icon sets listed here, each under its own license:
33
+
34
+ | Icon set name | upstream | version | license |
35
+ |------------------------|-------------------------------------------------------|-----------------|-------------|
36
+ | Codicons | https://github.com/microsoft/vscode-codicons | 0.0.45 | CC BY 4.0 |
37
+ | Devicons | https://github.com/devicons/devicon | 2.17.0 | MIT |
38
+ | extraglyphs | https://github.com/source-foundry/Hack | - | MIT |
39
+ | Font Awesome | https://github.com/FortAwesome/Font-Awesome | 6.5.1 | CC BY 4.0 |
40
+ | Font Awesome Extension | https://github.com/AndreLZGava/font-awesome-extension | 0.0.3 | MIT |
41
+ | Font Logos | https://github.com/lukas-w/font-logos | 1.3.0 | unlicensed |
42
+ | MaterialDesign | https://github.com/Templarian/MaterialDesign-Font | Oct 6, 2022 | Apache 2.0 |
43
+ | Octicons | https://github.com/primer/octicons | 18.3.0 | MIT |
44
+ | Seti and original | https://github.com/jesseweed/seti-ui | 0.8.1 | MIT |
45
+ | Pomicons | https://github.com/gabrielelana/pomicons | 1.001 | OFL 1.1 RFN |
46
+ | Powerline Extra | https://github.com/ryanoasis/powerline-extra-symbols | 1.200 | MIT |
47
+ | Powerline Symbols | https://github.com/powerline/powerline | 1.000 (ca 2013) | MIT |
48
+ | Power Symbols IEC | https://github.com/jloughry/Unicode | Feb 2015 | MIT |
49
+ | Weather Icons | https://github.com/erikflowers/weather-icons | 2.0.10 (1.100) | OFL 1.1 |
50
+
51
+
52
+ The MIT License (MIT)
53
+
54
+ Copyright (c) 2014 Ryan L McIntyre
55
+
56
+ Permission is hereby granted, free of charge, to any person obtaining a copy
57
+ of this software and associated documentation files (the "Software"), to deal
58
+ in the Software without restriction, including without limitation the rights
59
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
60
+ copies of the Software, and to permit persons to whom the Software is
61
+ furnished to do so, subject to the following conditions:
62
+
63
+ The above copyright notice and this permission notice shall be included in all
64
+ copies or substantial portions of the Software.
65
+
66
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
67
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
68
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
69
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
70
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
71
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
72
+ SOFTWARE.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wnzzer/agentdock",
3
- "version": "0.1.19",
3
+ "version": "0.1.21",
4
4
  "description": "Remote multi-agent development workspace for the official Claude Code and Codex CLIs",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/wnzzer/agentdock",
@@ -22,10 +22,10 @@
22
22
  "agentdock": "bin/agentdock.js"
23
23
  },
24
24
  "optionalDependencies": {
25
- "@wnzzer/agentdock-darwin-arm64": "0.1.19",
26
- "@wnzzer/agentdock-darwin-x64": "0.1.19",
27
- "@wnzzer/agentdock-linux-x64": "0.1.19",
28
- "@wnzzer/agentdock-linux-arm64": "0.1.19"
25
+ "@wnzzer/agentdock-darwin-arm64": "0.1.21",
26
+ "@wnzzer/agentdock-darwin-x64": "0.1.21",
27
+ "@wnzzer/agentdock-linux-x64": "0.1.21",
28
+ "@wnzzer/agentdock-linux-arm64": "0.1.21"
29
29
  },
30
30
  "files": [
31
31
  "bin/",