# glpi-go — the mglpi CLI exec-host. Image built here # (`docker compose build mglpi`); the container runs PERSISTENTLY and # every invocation is `docker exec` (Charles 2026-08-31): # # docker compose up -d mglpi # once, and at boot # mglpi change list --status new # ~/.local/bin/mglpi shim: # # docker exec -i mopac-cli-mglpi mglpi ... # docker exec -i mopac-cli-mglpi mglpi-mcp # the MCP surface (stdio) # # DUAL-SURFACE RULE (Charles 2026-08-31): every connector repo carries # BOTH its CLI and its MCP server (both binaries live in the same # image; the MCP surface is exec'd with -i). ALWAYS scope compose ops to # the exact service (`up -d mglpi`, `stop mglpi`, `rm -f mglpi`, # `build mglpi`). NEVER bare `docker compose down` in a connector repo. # # Never `docker run` per invocation (ephemeral spins are where the cruft # came from), never extracted binaries (outdated copies). The container # is always the exact pinned image build. # # Live credentials: MGLPI_URL / MGLPI_APP_TOKEN / MGLPI_USER_TOKEN # (plus optional MGLPI_PROFILE_ID) in a 0600 env file in ~/.creds # (single place, Charles 2026-08-31; see env.example). Never committed, # never logged. name: mopac-glpi services: mglpi: build: context: . dockerfile: deploy/Dockerfile.mglpi image: mopac-mglpi:1 container_name: mopac-cli-mglpi restart: unless-stopped # Exec-host pattern: idle forever, serve `docker exec` sessions. entrypoint: ["sleep", "infinity"] env_file: - ${MGLPI_CREDS:-/home/reachableceo/.creds}/mglpi.env