setup-local-stacklisted
Install: claude install-skill using-system/oddyssey
# gcx on the local oddyssey stack
One otel-lgtm container: Grafana, OTLP (gRPC and HTTP), Pyroscope's
ingest port, and four datasources behind the Grafana datasource proxy.
Bring it up with the oddyssey MCP tools (`odd_stack_status`,
`odd_stack_up`) before configuring anything here.
## Configure an isolated context
```bash
python3 <this skill's directory>/scripts/gcx_local.py
```
It takes no arguments but `--json`. It reads the host ports from the
global configuration — never assumed, never hardcoded — writes an **isolated** context at a stable path so the
user's own gcx contexts stay untouched, and proves it with `gcx config
check`. It prints the `export GCX_CONFIG=...` line to put in front of
every later gcx call, the four datasource UIDs, and the OTLP and
Pyroscope endpoints an instrumented service should target. `--json` for
the same, parseable.
Exit 0 means gcx reached the stack. Exit 1 says which step failed: gcx
missing (install it — `brew install gcx`, or the official script from
github.com/grafana/gcx), or the stack unreachable (`odd_stack_up`).
Re-run it after any port change. It rewrites the file whole on purpose:
gcx binds a stored credential to its destination, so patching the
`server:` line in place leaves the binding stale and gcx refuses it
before any network use.
## Inventory the services, in one command
```bash
python3 <this skill's directory>/scripts/probe_services.py <svc> [<svc> ...] --since 30m
```
One call answers what every observation asks be