jpicklyk/task-orchestrator/configure-server
Claude Code and agent skill by jpicklyk/task-orchestrator
- community
Checking that the SKILL.md file is still in the repository.
Configures how the MCP Task Orchestrator SERVER runs and is reached — transport (HTTP vs STDIO), the REST API, port publishing, config mounts, and config-sync. Use when a user says: run the server, register the image, set up the Docker container, enable the REST API, set up config-sync, reconfigure the server, change transport, expose the API, reconnect to a different endpoint, or allow a hostname. NOT for first-time onboarding (that's quick-start), NOT for project/personal setup (that's init),…
Install
npx vskill@latest install jpicklyk/task-orchestrator/configure-serverSKILL.md
Configure Server — Runtime & Transport Setup
Decides how the MCP Task Orchestrator container is launched and reached: transport, REST API mode, port publishing, config mount, and config-sync. This is a runtime/deployment concern, distinct from quick-start (first-time onboarding narrative) and manage-schemas (workflow gates/traits/ resources: content inside .taskorchestrator/config.yaml). Who a caller is comes from API_AUTH_MODE and its credentials; this skill renders none and bearer, and links jwks (fleet deployment, REST API, authentication) without rendering it; no config key sets it. If the user wants schema or gate changes — including resource-lease declarations — redirect to /manage-schemas instead of proceeding here.
One operator escape hatch worth knowing when launching the container: RESOURCE_LEASES_ENFORCED=false (env, default true) disables resource-lease gate enforcement server-wide — a kill switch for lease contention incidents. Configuring which resources exist and which traits declare them stays in /manage-schemas; this skill only knows the switch.
Not a director-mode skill: run it outside director mode (/task-orchestrator:director off); director-guard denies its file, shell and config steps partway through.
The full fragment catalog (exact env tuples, loopback caveat, Windows/MSYS caveat, .mcp.json shapes) lives in references/runtime-config.md — this skill's job is the decision flow and rendering, not re-deriving that catalog. Read it before rendering any command.
Step 0 - Upgrading from 3.x (only when it applies)
Enter this step when the user mentions upgrading, or an existing mcp-task-data volume or container is in play. Ask; docker ps -a and docker volume ls are allowed to look (outside director mode). A new install skips to Step 1. The image tag :latest moves to 4.x, so a 3.x install that pulls latest upgrades whether or not anyone planned it: run this step first. The plugin and the server majors must match: a 4.x plugin needs a 4.x server that advertises seats.
In order:
- Stop every 3.x process that uses the volume, stdio sessions included.
- Back up the whole volume off-volume. The automatic
.pre-4.0.*.bakcopy sits on the same volume, so it is not a backup. - Clear the settings that fail startup: remove a leftover
actor_authentication:orauditing:key from the mounted global config, and unsetDEGRADED_MODE_POLICY. The legacyschema_resolution,orchestration,retrospectiveandactor_attributionkeys only warn;USE_FLYWAYis ignored. - Start ONE detached 4.0 container and wait until it is healthy (the
docker inspecthealth loop of the fleet guide; raise--start-periodfor a large database). The once-only data steps, including the irreversibletype-backfill, run at this first boot. - When REST is on, read `/api/v1/info` and check
configWarnings. - Then register the clients (Steps 1-6).
Commands and rollback are in fleet deployment, Upgrading from 3.x; do not copy them here.
Step 1 — Offer the recommended default first
Before walking the full decision tree, offer the one-tap recommended path via AskUserQuestion:
Recommended default → skip straight to Step 5 (Render — HTTP) with: REST = unauthenticated, config mount = process-schema floor, debug = off. Customize → Step 2.
Why this is the default: it is the majority deployment shape for a single developer who wants config-sync (per-project config that hot-reloads without a restart) to just work across every project they open, without hand-managing tokens. The image itself still ships conservative (STDIO, REST off, 0.0.0.0 bind) — this posture is entirely rendered by this skill, never an image change.
Step 2 — Transport
STDIO ⊥ REST — hard constraint: if the user picks STDIO, skip Steps 3-4 entirely (REST mode and port are incoherent for a --rm -i per-session process) and go straight to Step 5 (Render — STDIO). Tell the user plainly: "STDIO has no REST API and no config-sync — those require a persistent HTTP daemon. If you want config-sync later, re-run this skill and choose HTTP."
HTTP → Step 3.
Step 3 — REST API mode (HTTP only)
- Unauthenticated → always render the loopback SECURITY caveat from
references/runtime-config.md
("Loopback footgun") before the command, and force -p 127.0.0.1:3001:3001 in the render — never a wider publish.
- Bearer → ask for the host path to the token YAML (free-text/"Other" answer), e.g.
~/.taskorchestrator-secrets/api-tokens.yaml. If the file doesn't exist yet, point at current/docs/api-rest.md §1 for the token-generation snippet — this skill does not generate tokens.
- Unauthenticated and Off both: every caller is the local agent principal (proof none), so a human-only decision class can never be answered; director-or-human classes (run budget, attempt cap, deviation) can, through the director entry. A user who wants human sign-off needs Bearer with a
kind: humantoken (see "Director credential"). - Off → REST fragment is
-e API_ENABLED=false -e MCP_ALLOW_UNAUTHENTICATED=true; config-sync will
no-op (tell the user). Without the opt-in, an HTTP server with the API off refuses to start (MCP_AUTH, fleet deployment); with it, /mcp serves every caller as the local principal, so render the loopback SECURITY caveat here too and keep -p 127.0.0.1:3001:3001. The recommended default keeps the API on and needs no opt-in.
Step 4 — Config mount and debug (HTTP only)
Do not offer to mount a project's own .taskorchestrator as a fallback: a mounted file that carries project.rootId is imported into that root, not the server scope, and fails startup when the database lacks that root. Project config reaches the server through config-sync, never the mount.
The floor directory (<FLOOR_DIR>) is resolved in Step 5 (it is needed on every path that mounts the floor, including the recommended default).
Then ask Yes/No for debug logging (LOG_LEVEL=DEBUG + DATABASE_SHOW_SQL=true).
Step 5 — Render
Look up the exact fragments in references/runtime-config.md — do not improvise env values.
Resolve `<FLOOR_DIR>` first whenever the floor is mounted (the recommended default, a Step 4 "Process-schema floor" answer, or STDIO). It is <checkout>/deploy/global-config/.taskorchestrator in a source checkout. Otherwise it is a host directory the user downloads the file into (the image bakes no config); render the command for them, for example:
On Windows (PowerShell):
STDIO
Render the .mcp.json args array shape (see reference doc, ".mcp.json shapes"):
Add the floor config-mount fragment (as args entries, not env flags: "-v", "<FLOOR_DIR>:/project/.taskorchestrator:ro", "-e", "AGENT_CONFIG_DIR=/project") by default (Step 4's config-mount question is HTTP only and is not asked here); leave it out only if the user asks for no mount. No REST, no port, no config-sync — say so. When asked, or when this skill runs standalone, also render the stdio director entry from references/runtime-config.md (.mcp.json shapes): the same docker run args with -e MCP_TOOL_PROFILE=director before the image, under the key mcp-task-orchestrator-director. A stdio server has no credentials, so the entry carries no header; the caller is the local agent principal.
HTTP — three coordinated pieces (all required, this is the default path now)
- The detached docker run command — compose the recommended-default tuple (or the customized
equivalent) from references/runtime-config.md:
`` docker run -d --name mcp-task-orchestrator-http --restart unless-stopped \ -v mcp-task-data:/app/data \ -v "<FLOOR_DIR>:/project/.taskorchestrator:ro" -e AGENT_CONFIG_DIR=/project \ -e MCP_TRANSPORT=http -e API_ENABLED=true -e API_AUTH_MODE=none -e API_ALLOW_UNAUTHENTICATED=true \ -p 127.0.0.1:3001:3001 \ ghcr.io/jpicklyk/task-orchestrator:latest ``
(Substitute the REST-off or bearer fragment per the user's Step 3 answer, drop the config-mount line (-v "<FLOOR_DIR>..." and -e AGENT_CONFIG_DIR) when the user chose None in Step 4, and add the debug fragment when they chose it.) On Windows, run this via PowerShell with ${PWD} for volume paths — see "Windows / MSYS path caveat" in the reference doc.
- The `.mcp.json` HTTP entry (NOT an args array):
``json { "mcpServers": { "mcp-task-orchestrator": { "type": "http", "url": "http://localhost:3001/mcp" } } } ``
In bearer mode the entry carries the token as a header, written as the placeholder (Claude Code expands it from the environment; never write the token itself into the file):
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingclaude-plugins/task-orchestrator/skills/configure-server/SKILL.md
Popularity
- Repository stars
- 205
- Repository forks
- 20
- 7-day trend score
- 27
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/jpicklyk/task-orchestrator/configure-server)