Skip to content

Commit 4739598

Browse files
jpicklykclaude
andcommitted
docs: audit and fix all project mount references across docs
Replace full project mounts with scoped .taskorchestrator/ mounts in all docs. No file outside .taskorchestrator/ should ever be exposed to the container. Files changed: - current/docs/quick-start.md: remove mount from Options A/B; fix :main→:latest; fix AGENT_CONFIG_DIR env var table entry; add Docker callout in note schemas section - current/docs/workflow-guide.md: fix dev example to use scoped mount - CLAUDE.md: fix all three dev docker run examples to use scoped mount; relabel "project mount" → "config mount" - .claude/commands/deploy_to_docker.md: replace hardcoded D:/Projects/... paths with $(pwd)/.taskorchestrator; relabel options to "Config Mount" - clockwork/docs/quick-start.md: fix full project mount in both examples (archived) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 8442f97 commit 4739598

File tree

5 files changed

+27
-24
lines changed

5 files changed

+27
-24
lines changed

.claude/commands/deploy_to_docker.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,11 @@ AskUserQuestion(
114114

115115
Use `<DATA_VOLUME>` as the data volume name: `mcp-task-data-current` for v3 (default) or `mcp-task-data` for v2 (`--clockwork`).
116116

117-
**"With Project Mount"**
117+
**"With Config Mount"**
118118
```bash
119119
docker run --rm -i \
120120
-v <DATA_VOLUME>:/app/data \
121-
-v D:/Projects/task-orchestrator:/project:ro \
121+
-v "$(pwd)"/.taskorchestrator:/project/.taskorchestrator:ro \
122122
-e AGENT_CONFIG_DIR=/project \
123123
<image-tag>
124124
```
@@ -127,7 +127,7 @@ docker run --rm -i \
127127
```bash
128128
docker run --rm -i \
129129
-v <DATA_VOLUME>:/app/data \
130-
-v D:/Projects/task-orchestrator:/project:ro \
130+
-v "$(pwd)"/.taskorchestrator:/project/.taskorchestrator:ro \
131131
-e AGENT_CONFIG_DIR=/project \
132132
-e LOG_LEVEL=DEBUG \
133133
-e DATABASE_SHOW_SQL=true \
@@ -157,8 +157,8 @@ AskUserQuestion(
157157
multiSelect: false,
158158
options: [
159159
{
160-
label: "With Project Mount (Recommended)",
161-
description: "Database volume + project mount + port 3001"
160+
label: "With Config Mount (Recommended)",
161+
description: "Database volume + .taskorchestrator config mount + port 3001"
162162
},
163163
{
164164
label: "With Debug Logging",
@@ -178,12 +178,12 @@ docker stop mcp-task-orchestrator-http 2>/dev/null || true
178178
docker rm mcp-task-orchestrator-http 2>/dev/null || true
179179
```
180180

181-
**"With Project Mount"**
181+
**"With Config Mount (Recommended)"**
182182
```bash
183183
docker run -d \
184184
--name mcp-task-orchestrator-http \
185185
-v <DATA_VOLUME>:/app/data \
186-
-v D:/Projects/task-orchestrator:/project:ro \
186+
-v "$(pwd)"/.taskorchestrator:/project/.taskorchestrator:ro \
187187
-e AGENT_CONFIG_DIR=/project \
188188
-e MCP_TRANSPORT=http \
189189
-e MCP_HTTP_HOST=0.0.0.0 \
@@ -197,7 +197,7 @@ docker run -d \
197197
docker run -d \
198198
--name mcp-task-orchestrator-http \
199199
-v <DATA_VOLUME>:/app/data \
200-
-v D:/Projects/task-orchestrator:/project:ro \
200+
-v "$(pwd)"/.taskorchestrator:/project/.taskorchestrator:ro \
201201
-e AGENT_CONFIG_DIR=/project \
202202
-e MCP_TRANSPORT=http \
203203
-e MCP_HTTP_HOST=0.0.0.0 \

CLAUDE.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,25 +43,25 @@ scripts\docker-build.bat # Windows CMD
4343
# Run Docker container (basic - database only)
4444
docker run --rm -i -v mcp-task-data:/app/data task-orchestrator:dev
4545

46-
# Run with project mount (recommended - enables config reading)
46+
# Run with config mount (enables custom note schemas)
4747
docker run --rm -i \
4848
-v mcp-task-data:/app/data \
49-
-v "$(pwd)":/project:ro \
49+
-v "$(pwd)"/.taskorchestrator:/project/.taskorchestrator:ro \
5050
-e AGENT_CONFIG_DIR=/project \
5151
task-orchestrator:dev
5252

5353
# Debug with logs
5454
docker run --rm -i \
5555
-v mcp-task-data:/app/data \
56-
-v "$(pwd)":/project:ro \
56+
-v "$(pwd)"/.taskorchestrator:/project/.taskorchestrator:ro \
5757
-e AGENT_CONFIG_DIR=/project \
5858
-e LOG_LEVEL=DEBUG \
5959
task-orchestrator:dev
6060

6161
# Run in HTTP transport mode (exposes port 3001, endpoint: http://localhost:3001/mcp)
6262
docker run --rm \
6363
-v mcp-task-data-current:/app/data \
64-
-v "$(pwd)":/project:ro \
64+
-v "$(pwd)"/.taskorchestrator:/project/.taskorchestrator:ro \
6565
-e AGENT_CONFIG_DIR=/project \
6666
-e MCP_TRANSPORT=http \
6767
-p 3001:3001 \

clockwork/docs/quick-start.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ Choose your AI platform and configure accordingly:
6161
Use the universal MCP configuration command from your project directory (works on macOS, Linux, Windows):
6262

6363
```bash
64-
claude mcp add-json task-orchestrator '{"type":"stdio","command":"docker","args":["run","--rm","-i","-v","mcp-task-data:/app/data","-v",".:/project","-e","AGENT_CONFIG_DIR=/project","ghcr.io/jpicklyk/task-orchestrator:latest"]}'
64+
claude mcp add-json task-orchestrator '{"type":"stdio","command":"docker","args":["run","--rm","-i","-v","mcp-task-data:/app/data","-v","./.taskorchestrator:/project/.taskorchestrator","-e","AGENT_CONFIG_DIR=/project","ghcr.io/jpicklyk/task-orchestrator:latest"]}'
6565
```
6666

6767
This single command works across all platforms. Claude Code will automatically configure and connect to the MCP server.
@@ -103,7 +103,7 @@ All these platforms use similar JSON configuration. Find your configuration file
103103
"--volume",
104104
"mcp-task-data:/app/data",
105105
"--volume",
106-
"/absolute/path/to/your/project:/project",
106+
"/absolute/path/to/your/project/.taskorchestrator:/project/.taskorchestrator",
107107
"--env",
108108
"AGENT_CONFIG_DIR=/project",
109109
"ghcr.io/jpicklyk/task-orchestrator:latest"

current/docs/quick-start.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ MCP Task Orchestrator gives AI agents persistent, structured task tracking that
1414
## Step 1: Pull the Docker image
1515

1616
```bash
17-
docker pull ghcr.io/jpicklyk/task-orchestrator:main
17+
docker pull ghcr.io/jpicklyk/task-orchestrator:latest
1818
```
1919

20-
The image is built from the `current` module (`runtime-current` target) and published to GitHub Container Registry. The `main` tag tracks the latest build from the main branch.
20+
The image is built from the `current` module (`runtime-current` target) and published to GitHub Container Registry. The `latest` tag always points to the most recent release from the main branch.
2121

2222
---
2323

@@ -33,9 +33,7 @@ claude mcp add-json mcp-task-orchestrator '{
3333
"args": [
3434
"run", "--rm", "-i",
3535
"-v", "mcp-task-data:/app/data",
36-
"-v", "${workspaceFolder}:/project:ro",
37-
"-e", "AGENT_CONFIG_DIR=/project",
38-
"ghcr.io/jpicklyk/task-orchestrator:main"
36+
"ghcr.io/jpicklyk/task-orchestrator:latest"
3937
]
4038
}'
4139
```
@@ -54,9 +52,7 @@ Add this to `.claude/settings.json` in your project root (checked into source co
5452
"args": [
5553
"run", "--rm", "-i",
5654
"-v", "mcp-task-data:/app/data",
57-
"-v", "${workspaceFolder}:/project:ro",
58-
"-e", "AGENT_CONFIG_DIR=/project",
59-
"ghcr.io/jpicklyk/task-orchestrator:main"
55+
"ghcr.io/jpicklyk/task-orchestrator:latest"
6056
]
6157
}
6258
}
@@ -178,6 +174,13 @@ After adding or editing this file, reconnect the MCP server:
178174

179175
Items tagged `task-implementation` will now require a `requirements` note before `advance_item(trigger="start")` advances them to work, and a `done-criteria` note before `advance_item(trigger="complete")` closes them.
180176

177+
> **Docker:** To read this config file, mount only the `.taskorchestrator/` folder into the container. Add this to your project-level `.mcp.json` (not the global CLI registration):
178+
> ```json
179+
> "-v", "${workspaceFolder}/.taskorchestrator:/project/.taskorchestrator:ro",
180+
> "-e", "AGENT_CONFIG_DIR=/project"
181+
> ```
182+
> Only the `.taskorchestrator/` folder is exposed — the server has no access to the rest of your project.
183+
181184
---
182185
183186
## Key concepts
@@ -198,7 +201,7 @@ Items tagged `task-implementation` will now require a `requirements` note before
198201
|----------|---------|-------------|
199202
| `DATABASE_PATH` | `data/current-tasks.db` | SQLite file path inside the container |
200203
| `USE_FLYWAY` | `true` | Apply database migrations on startup |
201-
| `AGENT_CONFIG_DIR` | `/project` | Directory containing `.taskorchestrator/config.yaml` |
204+
| `AGENT_CONFIG_DIR` | _(unset)_ | Parent directory of `.taskorchestrator/`; set when mounting a config folder into the container |
202205
| `LOG_LEVEL` | `INFO` | Verbosity: `DEBUG`, `INFO`, `WARN`, `ERROR` |
203206
204207
---

current/docs/workflow-guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,7 @@ note_schemas:
554554
- Docker override: set `AGENT_CONFIG_DIR` environment variable to the directory containing `.taskorchestrator/`.
555555

556556
```bash
557-
docker run -e AGENT_CONFIG_DIR=/project -v "$(pwd)":/project:ro task-orchestrator:dev
557+
docker run -e AGENT_CONFIG_DIR=/project -v "$(pwd)"/.taskorchestrator:/project/.taskorchestrator:ro task-orchestrator:dev
558558
```
559559

560560
---

0 commit comments

Comments
 (0)