The self-hosted AI Assistant UI does not expose sandbox runtime information.
When all sandbox runner slots are occupied, the user only sees:
“Something went wrong before I could finish that response. Please try again.”
There is no indication that:
- sandbox capacity has been exhausted;
- a specific chat owns an active sandbox;
- an idle sandbox is still occupying a runner slot;
- the user should wait for the idle timeout or release a sandbox.
This makes the issue look like an LLM, network, or workflow failure.
Proposed improvement
AI Assistant header
Show an aggregate status indicator:
- Sandboxes: 0/2
- Sandboxes: 1/2
- Sandboxes: 2/2 — capacity full
- Runner unavailable
Chat list
Show a status for every chat:
- Active
- Starting
- Idle
- Stopped
- Unavailable
Also show the last activity time.
Sandbox controls
Add a “Release sandbox” or “Stop sandbox” action that frees the
runtime without deleting the chat history.
Deleting the chat and releasing its sandbox should remain separate
operations.
Error handling
Instead of a generic error, display an actionable message:
“No sandbox capacity is currently available. 2 of 2 slots are in use.
Wait for an idle sandbox to stop or release one of the active sessions.”
Administration
Instance owners should be able to see:
- registered runners;
- total and used capacity;
- sandbox idle TTL;
- active sandbox count;
- which accessible chat owns each sandbox.
The browser should not communicate with Sandbox API directly.
The n8n backend should query Sandbox API, enforce project/user
permissions, correlate sandbox IDs with AI thread IDs, and return only
safe status information.
Environment
- n8n 2.35.7
- Self-hosted with Docker Compose
- n8n Sandbox Service
- Runner capacity: 2
- Idle TTL: 1800 seconds
Reproduction
- Start AI Assistant chats until both runner slots are occupied.
- Open another chat.
- Send a message.
- The UI displays only a generic error.
- The server logs show that no sandbox runners are available.