[BUG]: Local ./shannon start -r fails when Temporal already exists, and router startup breaks on SELinux hosts
Author: dejelyCreated Apr 16, 2026Updated Apr 16, 2026
Describe the bug
The immediate failure was in ensureInfra() (line 83). When Temporal was already running but the router was not, the CLI still ran a full docker compose up -d --profile router instead of up -d router. That made Compose try to create shannon-temporal again, and Docker rejected it because that fixed container name already existed.
After that was fixed, a second Linux-specific issue showed up:
The router container couldn’t read the mounted router-config.json (line 37) because of SELinux labeling, so it exited with Permission denied.
@host ./shannon start -u <url> -r ../xxx
Starting router...
WARN[0000] a network with name shannon-net exists but was not created for project "shannon".
Set `external: true` to use an existing network
WARN[0000] Found orphan containers ([shannon-worker-1]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
[+] up 2/3
✔ Volume ... Created 0.0s
⠋ Contain... Creating 0.0s
✘ Contain... Error response from daemon: Conflict. The container name "/shannon-temporal" is already in use by container "deaaa6722553ecdd5e8751e3c7cefb87c63c3f6f3c5e30fb0088e2c40f43252c". You have to remove (or rename) that container to be able to reuse that name. 0.0s
Error response from daemon: Conflict. The container name "/shannon-temporal" is already in use by container "deaaa6722553ecdd5e8751e3c7cefb87c63c3f6f3c5e30fb0088e2c40f43252c". You have to remove (or rename) that container to be able to reuse that name.
node:internal/errors:983
const err = new Error(message);
^
Error: Command failed: docker compose -f /home/host/Documents/GitHub/shannon/docker-compose.yml --profile router up -d
at genericNodeError (node:internal/errors:983:15)
at wrappedFn (node:internal/errors:537:14)
at checkExecSyncError (node:child_process:916:11)
at execFileSync (node:child_process:952:15)
at ensureInfra (file:///home/host/Documents/GitHub/shannon/apps/cli/dist/index.mjs:105:2)
at start (file:///home/host/Documents/GitHub/shannon/apps/cli/dist/index.mjs:1275:8)
at file:///home/host/Documents/GitHub/shannon/apps/cli/dist/index.mjs:1624:9
at ModuleJob.run (node:internal/modules/esm/module_job:343:25)
at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:665:26) {
status: 1,
signal: null,
output: [ null, null, null ],
pid: 575605,
stdout: null,
stderr: null
}
Node.js v22.22.0
Steps to reproduce
- Clone the repo on Linux.
2.Configure router mode so the CLI will try to start the router:
- set
OPENAI_API_KEY - set
ROUTER_DEFAULT(for exampleopenai,gpt-5.2)
- set
- Start Temporal first:
docker compose -p infra -f docker-compose.yml up -d temporal
- Confirm
shanon-temporalis healthy - Run /shannon start -u -r
- observe: sh: 4: cannot open /config/router-config.json: Permission denied
Expected behaviour
- If Temporal is already healthy and only the router is missing, the CLI should start only
router. - The router config bind mount should work on SELinux-enabled systems.
- Local and packaged runs should reuse the same Compose project so existing infra is recognized.
Actual behaviour
- The CLI tries to recreate shannon-temporal and fails because the fixed container name already exists.
- On SELinux hosts, the router container exits before becoming healthy because it cannot read the mounted config file.
Pre-submission checklist (required)
- I have searched the existing open issues and confirmed this bug has not already been reported.
- I am running the latest released version of
shannon.
If applicable
- I have included relevant error messages, stack traces, or failure details.
- I have checked the workspaces folder for logs and pasted the relevant errors.
- I have inspected the failed Temporal workflow run and included the failure reason.
- I have included clear steps to reproduce the issue.
- I have redacted any sensitive information (tokens, URLs, repo names).
Debugging details
No response
Screenshots
No response
CLI mode
npx (@keygraph/shannon)
Provider
Router - OpenRouter
Full command with all flags used (with redactions)
./shannon start -u -r
OS (with version)
Fedora Linux 44
Node.js version ('node -v')
22.22.0
Docker version ('docker -v')
29.3.0, build 1.fc43
Additional context
No response
Source: KeygraphHQ/shannon