github Python analyzed 66de376

blakeaber/rooben

github

Spec-driven multi-agent orchestration with verification and budget enforcement. Your taste is the product.

maintainer
blakeaber
licence
Apache-2.0
first seen
2026-06-26
last seen
2026-06-29
releases · 30d
0
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged committed secret in blakeaber/rooben
  2. HIGH code analysis flagged dynamic code execution in blakeaber/rooben
  3. HIGH code analysis flagged committed secret in blakeaber/rooben
  4. HIGH code analysis flagged committed secret in blakeaber/rooben
capabilities 0 tools
transport stdio · http counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 66de376 · analyzer v33 · 1w ago

skills & prompt files 2

danger signals3

code evidence vv0.2.1 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 325

filesystem 99

  • fs (weak) blakeaber-rooben-66de376/scripts/ensure_schema.py :15 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/_demo_orchestration.py :26 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/agents/integrations.py :21 import shutil
  • fs blakeaber-rooben-66de376/src/rooben/cli.py :7 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/context/builder.py :7 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/context/codebase_index.py :8 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/dashboard/app.py :8 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/dashboard/credentials.py :5 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/dashboard/routes/credentials.py :136 import shutil as _shutil
  • fs blakeaber-rooben-66de376/src/rooben/dashboard/routes/extensions_api.py :138 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/dashboard/routes/hub.py :363 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/dashboard/routes/integrations.py :6 from pathlib import Path
show 28 more
  • fs blakeaber-rooben-66de376/src/rooben/dashboard/routes/refine.py :8 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/dashboard/routes/waitlist.py :8 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/dashboard/routes/workflows.py :7 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/dashboard/routes/workspace.py :6 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/dashboard/server.py :7 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/dashboard/workflow_launcher.py :8 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/extensions/installer.py :6 import shutil
  • fs blakeaber-rooben-66de376/src/rooben/extensions/loader.py :6 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/extensions/manifest.py :78 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/orchestrator.py :845 from pathlib import Path
  • fs (weak) blakeaber-rooben-66de376/src/rooben/spec/loader.py :6 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/state/filesystem.py :6 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/verification/test_runner.py :8 from pathlib import Path
  • fs blakeaber-rooben-66de376/src/rooben/workspace/local.py :8 import shutil
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/browser.py :90 def open(self, path: str, *, wait_ms: int = 2000) -> str:
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/conftest.py :5 import shutil
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/helpers.py :12 """Set localStorage to skip SetupWizard. Call after browser.open()."""
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/test_a2a_protocol.py :14 browser.open("/")
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/test_agent_performance.py :14 browser.open("/agents")
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/test_branding.py :17 browser.open("/")
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/test_cost_analytics.py :14 browser.open("/cost")
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/test_cross_flow_journeys.py :13 browser.open("/")
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/test_cross_page_flows.py :9 browser.open("/integrations")
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/test_dashboard_home.py :16 browser.open("/")
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/test_error_handling.py :30 browser.open("/")
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/test_evaluator_journey.py :43 browser.open("/")
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/test_guided_workflow.py :17 browser.open("/workflows/new")
  • fs (weak) blakeaber-rooben-66de376/tests/e2e/test_hints.py :27 browser.open("/")

59 more not shown — this panel samples each group; the count above is the real total.

shell / exec 4

  • shell blakeaber-rooben-66de376/src/rooben/dashboard/server.py :5 import subprocess
  • shell (weak) blakeaber-rooben-66de376/tests/e2e/browser.py :7 import subprocess
  • shell (weak) blakeaber-rooben-66de376/tests/test_docker_compose_smoke.py :19 import subprocess
  • shell (weak) blakeaber-rooben-66de376/tests/test_readme_quickstart.py :24 import subprocess

network 10

  • net blakeaber-rooben-66de376/src/rooben/agents/http_agent.py :7 import httpx
  • net blakeaber-rooben-66de376/src/rooben/cli_api.py :7 import httpx
  • net blakeaber-rooben-66de376/src/rooben/dashboard/routes/credentials.py :224 import httpx
  • net blakeaber-rooben-66de376/src/rooben/dashboard/routes/integrations.py :322 import httpx
  • net blakeaber-rooben-66de376/src/rooben/planning/provider.py :89 import httpx
  • net (weak) blakeaber-rooben-66de376/tests/e2e/conftest.py :37 import urllib.request
  • net (weak) blakeaber-rooben-66de376/tests/e2e/test_p14_a2a.py :6 import urllib.request
  • net (weak) blakeaber-rooben-66de376/tests/test_docker_compose_smoke.py :23 import httpx
  • net (weak) blakeaber-rooben-66de376/tests/validate_core_differentiators.py :214 content="Use httpx.AsyncClient as context manager for testing FastAPI async endpoints. pytest-asyncio fixtures simplify setup.",
  • net (weak) blakeaber-rooben-66de376/tests/validate_live_e2e.py :399 """Start FastAPI app and hit endpoints via httpx."""

secrets 6

  • secrets (weak) blakeaber-rooben-66de376/tests/experiments/run_spawn_pipeline_experiment.py :421 api_key = os.environ.get("ANTHROPIC_API_KEY")
  • secrets (weak) blakeaber-rooben-66de376/tests/test_job_matcher_orchestration.py :262 api_key = os.environ.get("ANTHROPIC_API_KEY")
  • secrets (weak) blakeaber-rooben-66de376/tests/test_live_e2e.py :28 not os.environ.get("ANTHROPIC_API_KEY"),
  • secrets (weak) blakeaber-rooben-66de376/tests/test_p11_config.py :33 os.environ["ROOBEN_CREDENTIAL_KEY"] = ""
  • secrets (weak) blakeaber-rooben-66de376/tests/test_security.py :83 os.environ["ANTHROPIC_API_KEY"] = "test-key-12345678901234567890"
  • secrets (weak) blakeaber-rooben-66de376/tests/validate_live_e2e.py :54 return bool(os.environ.get("ANTHROPIC_API_KEY"))

database 15

  • db (weak) blakeaber-rooben-66de376/scripts/ensure_schema.py :38 import asyncpg # noqa: F811
  • db blakeaber-rooben-66de376/src/rooben/dashboard/app.py :16 import asyncpg
  • db blakeaber-rooben-66de376/src/rooben/dashboard/deps.py :8 import asyncpg
  • db blakeaber-rooben-66de376/src/rooben/dashboard/queries/agents.py :7 import asyncpg
  • db blakeaber-rooben-66de376/src/rooben/dashboard/queries/community.py :9 import asyncpg
  • db blakeaber-rooben-66de376/src/rooben/dashboard/queries/credentials.py :5 import asyncpg
  • db blakeaber-rooben-66de376/src/rooben/dashboard/queries/dashboard_summary.py :5 import asyncpg
  • db blakeaber-rooben-66de376/src/rooben/dashboard/queries/goals.py :7 import asyncpg
  • db blakeaber-rooben-66de376/src/rooben/dashboard/queries/outcomes.py :5 import asyncpg
  • db blakeaber-rooben-66de376/src/rooben/dashboard/queries/presets.py :7 import asyncpg
  • db blakeaber-rooben-66de376/src/rooben/dashboard/queries/roles.py :5 import asyncpg
  • db blakeaber-rooben-66de376/src/rooben/dashboard/queries/tasks.py :7 import asyncpg
show 3 more
  • db blakeaber-rooben-66de376/src/rooben/dashboard/queries/user_preferences.py :7 import asyncpg
  • db blakeaber-rooben-66de376/src/rooben/dashboard/queries/workflows.py :8 import asyncpg
  • db (weak) blakeaber-rooben-66de376/tests/validate_live_e2e.py :402 import asyncpg

declared dependencies 21

  • mcp@>=1.0,<1.20
  • pydantic@>=2.0,<3
  • pyyaml@>=6.0
  • anthropic@>=0.40
  • httpx@>=0.27
  • click@>=8.0
  • structlog@>=24.0
  • tenacity@>=9.0
  • python-dotenv@>=1.0
  • openai@>=1.0
  • boto3@>=1.35
  • fastapi@>=0.115
show 9 more
  • uvicorn@>=0.34
  • sse-starlette@>=2.0
  • cryptography@>=43.0
  • asyncpg@>=0.29
  • pytest@>=8.0
  • pytest-asyncio@>=0.24
  • pytest-timeout@>=2.3
  • rooben@*
  • ruff@>=0.8