Skip to content

Add an in-container MCP admin tool surface for self-hosted config + redeploy management #7720

Description

@JSONbored

Problem

Every self-hoster manages their own .loopover.yml private config (global + per-repo, under LOOPOVER_REPO_CONFIG_DIR) and redeploys their own stack by SSHing into their own box and editing files / running scripts by hand -- confirmed today as the only supported path (self-hosting-operations.mdx even documents docker exec ... ls -A "$LOOPOVER_REPO_CONFIG_DIR" as the way to inspect it). There is no remote/programmatic way for an MCP client to read or write that config, or to trigger a redeploy of the self-hosted stack -- for any self-hoster, not just us.

Area

src/mcp/server.ts (existing network-reachable MCP server, LOOPOVER_MCP_TOKEN-gated), src/selfhost/private-config.ts (currently 100% read-only), docker-compose.yml (config mount is deliberately :ro today), src/env.d.ts, self-hosting docs.

Proposal

A new, generic, config-as-code, off-by-default MCP admin tool category that ships inside the loopover-selfhost image itself -- any self-hoster running their own instance gets the same capability for their own config/deploys, nothing JSONbored-specific. Split into two sub-issues with very different risk profiles (see below) -- the config read/write half has a clean precedent to extend; the redeploy half does not and needs its own design decision before implementation.

Deliverables

Resources

  • Existing MCP server auth pattern: LOOPOVER_MCP_TOKEN + MCP_ACTUATION_REPO_ALLOWLIST/MCP_READ_REPO_ALLOWLIST (fail-closed allowlists), self-hosting-configuration.mdx:117-143
  • src/selfhost/private-config.ts's existing read path (candidate-path resolution, manifest parsing) to mirror for the write path
  • docker-proxy sidecar (docker-compose.yml, tecnativa/docker-socket-proxy) as this repo's own established pattern for narrowly-scoped, non-raw-socket privileged access

Boundaries

In-container admin tool surface only -- not a change to the public .loopover.yml.example/dashboard settings API, and not a change to how JSONbored's own infra is operated day-to-day (that stays SSH-based unless/until this ships and is deployed).

maintainer-only -- new privileged control surface touching self-hosted config and deploys, needs maintainer review.

Metadata

Metadata

Assignees

Labels

maintainer-onlyOwner-only work — yields no Gittensor points.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions