Watercooler: your team's shared reasoning layer for agentic coding. Preserve the "why" around your code.
Drift inferred · capture-to-capture
- HIGH code analysis flagged committed secret ×2, dynamic code execution ×2 in mostlyharmless-ai/watercooler
transport stdio · streamable-http · http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit a5efa89 · analyzer v28 · 1d ago
skills & prompt files 21
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/claude/watercooler/skills/find-related/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/claude/watercooler/skills/recall/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/claude/watercooler/skills/search-threads/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/claude/watercooler/skills/threads/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/claude/watercooler/skills/update-agent-context/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/claude/watercooler/skills/watercooler-health/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/claude/watercooler/skills/watercooler-onboarding/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/codex/watercooler/skills/find-related/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/codex/watercooler/skills/recall/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/codex/watercooler/skills/search-threads/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/codex/watercooler/skills/threads/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/codex/watercooler/skills/update-agent-context/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/codex/watercooler/skills/watercooler-health/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/plugins/codex/watercooler/skills/watercooler-onboarding/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/skills/find-related/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/skills/recall/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/skills/search-threads/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/skills/threads/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/skills/update-agent-context/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/skills/watercooler-health/SKILL.md
- skill mostlyharmless-ai-watercooler-a5efa89/skills/watercooler-onboarding/SKILL.md
danger signals4
- dynamic code execution pickle.loads() mostlyharmless-ai-watercooler-a5efa89/tests/integration/test_pat_pilot_chain.py :142
rehydrated = pickle.loads(pickle.dumps(s)) - dynamic code execution pickle.loads() mostlyharmless-ai-watercooler-a5efa89/tests/unit/test_secret_wrapper.py :407
rehydrated = pickle.loads(pickle.dumps(original)) - committed secret Slack token mostlyharmless-ai-watercooler-a5efa89/tests/unit/test_secret_wrapper.py :236
xoxb-s…(15 chars, redacted) - committed secret Slack token mostlyharmless-ai-watercooler-a5efa89/tests/unit/test_security.py :62
xoxb-s…(23 chars, redacted)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 447
filesystem 104
- fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/agents.py :8
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/analysis_lib.py :19
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/annotations.py :23
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/export.py :11
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/parser.py :14
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/pipeline/__main__.py :12
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/pipeline/config.py :4
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/pipeline/runner.py :6
import shutil - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/pipeline/state.py :12
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/projector.py :20
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/reader.py :22
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/search.py :22
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/storage.py :24
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/sync.py :50
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/writer.py :21
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/belief_candidate.py :45
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/blessed_projection.py :27
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/cli.py :14
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/commands.py :4
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/commands_graph.py :25
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/config_facade.py :39
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/config_loader.py :26
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/config_schema.py :12
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/credentials.py :22
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/fs.py :4
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/learning_extraction.py :25
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/lock.py :6
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/metrics/orchestration.py :34
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/migration/_orphan.py :13
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/migration/checkpoint.py :10
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/migration/cli.py :7
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/migration/t1.py :16
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/migration/t2.py :31
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/models.py :38
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/path_resolver.py :15
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/project_coordinator_lib.py :20
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/promotion.py :206
# deliberately non-terminal — the candidate stays open (§5.4). - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/pulse_report_lib.py :40
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/pulse_snapshot_lib.py :29
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/role_loader.py :15
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/role_salience_lib.py :33
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/roles_scaffold.py :22
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/slack_cli.py :10
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/stop_hook.py :40
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/sync_common.py :16
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/sync_repair.py :21
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/testing.py :32
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/thread_entries.py :33
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler/write_guard.py :43
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/audit/egress_inventory.py :52
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/auth/scope.py :39
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/config.py :4
import shutil - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/__init__.py :24
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/auditor.py :21
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/committer.py :32
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/daemon_write.py :19
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/decision_detector.py :19
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/decision_extractor.py :18
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/decision_extractor_reset.py :14
import shutil - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/decision_stance.py :22
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/enrich_supersession.py :18
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/findings_source.py :17
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/hosted_coordinator.py :20
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/hosted_worktree.py :24
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/learnings.py :31
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/project_coordinator.py :18
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/role_salience.py :15
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/state.py :24
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/sync_guard.py :20
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/t2_health_probe.py :28
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/deployment_profile.py :30
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/federation/resolver.py :12
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/handoff_receipts.py :25
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/health_probe.py :27
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/helpers.py :14
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/memory.py :12
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/memory_queue/__init__.py :19
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/memory_queue/checkpoint.py :15
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/memory_queue/queue.py :16
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/memory_sync.py :23
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/observability.py :52
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/premium_client.py :19
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/proxy_guard.py :50
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/server.py :15
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/setup_report.py :23
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/slack/mapping.py :17
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/slack/sync.py :20
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/startup.py :14
import shutil - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/sync/__init__.py :13
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/sync/file_lock.py :22
with open(findings_path, "a") as f: - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/sync/primitives.py :22
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/t1_hybrid.py :19
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/daemon.py :16
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/decisions.py :16
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/diagnostic.py :15
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/graph.py :20
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/memory.py :26
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/migration.py :18
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/promotion.py :17
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/roles.py :23
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/setup.py :18
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/thread_query.py :17
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/thread_write.py :16
from pathlib import Path - fs mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/validation.py :19
from pathlib import Path
shell / exec 11
- shell mostlyharmless-ai-watercooler-a5efa89/src/watercooler/cli.py :9
import subprocess - shell mostlyharmless-ai-watercooler-a5efa89/src/watercooler/path_resolver.py :26
"""Git repository information from subprocess git calls. - shell mostlyharmless-ai-watercooler-a5efa89/src/watercooler/sync_common.py :13
import subprocess - shell mostlyharmless-ai-watercooler-a5efa89/src/watercooler/sync_repair.py :18
import subprocess - shell mostlyharmless-ai-watercooler-a5efa89/src/watercooler/write_guard.py :42
import subprocess - shell mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/auth/scope.py :313
import subprocess - shell mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/config.py :5
import subprocess - shell mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/hosted_worktree.py :20
import subprocess - shell mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/startup.py :16
import subprocess - shell mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/diagnostic.py :12
import subprocess - shell mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/graph.py :2648
import subprocess as _sp
network 23
- net mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/pipeline/runner.py :440
import httpx - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/summarizer.py :207
import httpx - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/sync.py :361
import httpx - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler/memory_config.py :20
from urllib.parse import urlparse - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler/path_resolver.py :379
from urllib.parse import urlparse as _urlparse - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler/slack_cli.py :56
import urllib.request - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/audit/egress_inventory.py :91
"httpx.get", - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/auth/__init__.py :41
import urllib.parse - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/auth/hmac_resolver.py :110
from urllib.parse import urlsplit - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/cache.py :40
import urllib.request - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/capability_auth.py :18
import urllib.error - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/daemons/llm_client.py :40
from urllib.parse import urlparse - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/github_api.py :39
import urllib.error - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/hosted_ops.py :28
import urllib.error - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/hosted_semantic.py :33
from urllib.parse import urlparse - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/middleware.py :78
import httpx - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/premium_client.py :139
The ``mcp`` SDK raises ``httpx.HTTPStatusError`` (which carries a - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/server_http.py :399
# ``httpx.Client``. A direct call from this ``async def`` would - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/slack/client.py :16
import urllib.request - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/slack/notify.py :12
import urllib.request - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/slack/token_service.py :26
import urllib.request - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/startup.py :15
import socket - net mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/tools/diagnostic.py :295
import socket as _socket
secrets 13
- secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler/agents.py :4
import getpass - secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/pipeline/config.py :33
return os.environ.get("LLM_API_KEY", "") - secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler/baseline_graph/summarizer.py :1207
if os.environ.get("BASELINE_GRAPH_API_KEY"): - secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler/cli.py :1195
import getpass - secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler/credentials.py :547
env_token = os.getenv("GITHUB_TOKEN") or os.getenv("GH_TOKEN") - secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler/lock.py :3
import getpass - secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler/memory_config.py :473
key = os.getenv("GEMINI_API_KEY") - secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler/migration/cli.py :103
env_value = os.environ.get("FALKORDB_PASSWORD", "") - secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/auth/__init__.py :670
"token_api_key": os.getenv("WATERCOOLER_TOKEN_API_KEY", ""), - secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/cache.py :358
self._api_key = api_key or os.getenv("WATERCOOLER_TOKEN_API_KEY", "") - secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/config.py :933
"bot_token": os.getenv("WATERCOOLER_SLACK_BOT_TOKEN", slack.bot_token), - secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/hosted_ops.py :1398
return os.getenv("WATERCOOLER_SLACK_SYNC_SECRET", "") - secrets mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/slack/token_service.py :63
"token_api_key": os.getenv("WATERCOOLER_TOKEN_API_KEY", ""),
database 2
- db mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/memory_sync.py :121
from redis.exceptions import ( - db mostlyharmless-ai-watercooler-a5efa89/src/watercooler_mcp/server_http.py :1566
# connection-failure exceptions from redis/socket libs
declared dependencies 24
- fastmcp@>=3.0,<4
- python-ulid@>=2.0
- GitPython@>=3.1.0
- pydantic@>=2.0
- tomli@>=2.0;python_version<
- pytest@>=7.0
- mypy@>=1.0
- jsonschema@>=4.0
- tqdm@>=4.0
- setuptools@>=61.0
- litellm@>=1.0
- docker@>=7.0
- datasets@>=2.0
- swebench@>=1.0,<2
- jieba@>=0.42.1
- rapidfuzz@>=3.10.1
- umap-learn@>=0.5.6
- openhands-sdk@>=1.0,<2; python_version >=
- 3.12@*
- fastapi@>=0.100
- httpx@>=0.25
- huggingface_hub@>=0.20
- pyvis@>=0.3.0
- networkx@>=3.0
transport_posture 2
- network-listening, binds all interfaces, no auth detected mostlyharmless-ai-watercooler-a5efa89/tests/integration/test_config_integration.py :23
host = "0.0.0.0" - network-listening, binds all interfaces, no auth detected mostlyharmless-ai-watercooler-a5efa89/tests/unit/test_startup_services.py :1689
"""Host='::' must probe (AF_INET6, '::'), not (AF_INET, '0.0.0.0').