A local, containerized AI workbench. Open WebUI over LiteLLM, an MCP tool rack where every tool is an OCI container, and Phoenix tracing across the lot. Built as a starting point to fork, not a product to adopt.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport streamable-http counts 2 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
execute_task
-
magic_fetch
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 20e2754 · analyzer v33 · 3w ago
skills & prompt files 1
danger signals1
- credential in logs credential in log jeffols-ai-workbench-public-20e2754/scripts/generate_sqlite3_password.py :23
print(password)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 19
filesystem 12
- fs jeffols-ai-workbench-public-20e2754/registry/apply.py :16
from pathlib import Path - fs (weak) jeffols-ai-workbench-public-20e2754/scripts/bootstrap.py :20
from pathlib import Path - fs (weak) jeffols-ai-workbench-public-20e2754/scripts/fetch_agentregistry.py :17
import shutil - fs (weak) jeffols-ai-workbench-public-20e2754/scripts/healthcheck.py :13
from pathlib import Path - fs (weak) jeffols-ai-workbench-public-20e2754/scripts/open_notebook_model_config.py :15
from pathlib import Path - fs (weak) jeffols-ai-workbench-public-20e2754/scripts/pin_images.py :20
from pathlib import Path - fs (weak) jeffols-ai-workbench-public-20e2754/scripts/query.py :24
from pathlib import Path - fs (weak) jeffols-ai-workbench-public-20e2754/scripts/sanitize_compose.py :12
from pathlib import Path - fs (weak) jeffols-ai-workbench-public-20e2754/scripts/tool_stats.py :22
from pathlib import Path - fs (weak) jeffols-ai-workbench-public-20e2754/scripts/validate_env.py :5
from pathlib import Path - fs (weak) jeffols-ai-workbench-public-20e2754/scripts/workbench_discovery.py :33
from pathlib import Path - fs jeffols-ai-workbench-public-20e2754/services/code-agent/server.py :69
from pathlib import Path as _Path
shell / exec 2
- shell (weak) jeffols-ai-workbench-public-20e2754/scripts/fetch_agentregistry.py :18
import subprocess - shell (weak) jeffols-ai-workbench-public-20e2754/scripts/pin_images.py :18
import subprocess
network 8
- net jeffols-ai-workbench-public-20e2754/registry/apply.py :14
import urllib.request - net (weak) jeffols-ai-workbench-public-20e2754/scripts/bootstrap.py :404
import urllib.request - net (weak) jeffols-ai-workbench-public-20e2754/scripts/healthcheck.py :11
import urllib.request - net (weak) jeffols-ai-workbench-public-20e2754/scripts/open_notebook_model_config.py :17
import urllib.error - net (weak) jeffols-ai-workbench-public-20e2754/scripts/query.py :25
from urllib.parse import urlparse - net (weak) jeffols-ai-workbench-public-20e2754/scripts/tool_stats.py :24
from urllib.parse import quote - net (weak) jeffols-ai-workbench-public-20e2754/scripts/workbench_discovery.py :36
import httpx - net jeffols-ai-workbench-public-20e2754/services/code-agent/server.py :15
import httpx
secrets 1
- secrets jeffols-ai-workbench-public-20e2754/services/code-agent/server.py :32
LITELLM_API_KEY = os.environ.get("LITELLM_API_KEY", "")
tool registrations 2
- execute_task jeffols-ai-workbench-public-20e2754/services/code-agent/server.py :660
- magic_fetch jeffols-ai-workbench-public-20e2754/services/magic-fetch/server.py :55
declared dependencies 5
- mcp@[cli]>=1.9,<2
- httpx@>=0.27,<1
- opentelemetry-api@>=1.20,<2
- opentelemetry-sdk@>=1.20,<2
- opentelemetry-exporter-otlp-proto-http@>=1.20,<2
transport_posture 2
- binds all interfaces (0.0.0.0) jeffols-ai-workbench-public-20e2754/services/code-agent/server.py :652
mcp = FastMCP("Code Agent", host="0.0.0.0", port=8080) - network-listening, binds all interfaces, no auth detected jeffols-ai-workbench-public-20e2754/services/magic-fetch/server.py :47
mcp = FastMCP("Magic Fetch", host="0.0.0.0", port=8000)