github Python analyzed 83925ec

DataViking-Tech/Althing

github

Run synthetic focus groups and user research panels using AI personas. CLI tool, Python library, any LLM.

maintainer
DataViking-Tech
license
MIT
first seen
2026-07-20
last seen
2026-07-20
releases · 30d
1
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution in DataViking-Tech/Althing
capabilities 15 tools
transport stdio · http counts 15 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • extend_panel
  • get_instrument_pack
  • get_panel_result
  • get_persona_pack
  • list_instrument_packs
  • list_instruments
  • list_panel_results
  • list_persona_packs
  • list_personas
  • quick_poll
  • run_panel
  • run_prompt
  • run_quick_poll
  • save_instrument_pack
  • save_persona_pack
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 83925ec · analyzer v28 · 3h ago

skills & prompt files 19

danger signals2

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

code files: 290

filesystem 28

  • fs DataViking-Tech-Althing-83925ec/site/generate-og-image.py :20 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/attachments/store.py :19 import shutil
  • fs DataViking-Tech-Althing-83925ec/src/althing/calibration.py :90 with open(path, encoding="utf-8") as f:
  • fs DataViking-Tech-Althing-83925ec/src/althing/checkpoint.py :40 import shutil
  • fs DataViking-Tech-Althing-83925ec/src/althing/cli/commands.py :15 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/cli/mcp_install.py :13 import shutil
  • fs DataViking-Tech-Althing-83925ec/src/althing/cli/output.py :10 import shutil
  • fs DataViking-Tech-Althing-83925ec/src/althing/cli/progress.py :10 import shutil
  • fs DataViking-Tech-Althing-83925ec/src/althing/cli/slash.py :137 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/convergence.py :566 self._log_fh = open(log_path, "a", buffering=1, encoding="utf-8") # noqa: SIM115
  • fs DataViking-Tech-Althing-83925ec/src/althing/cost_summary.py :19 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/credentials.py :22 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/diff.py :8 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/fetch/cache.py :35 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/llm/aliases.py :14 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/main.py :83 devnull = os.open(os.devnull, os.O_WRONLY)
  • fs DataViking-Tech-Althing-83925ec/src/althing/mcp/data.py :21 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/pack_diff.py :17 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/persistence.py :12 import shutil
  • fs DataViking-Tech-Althing-83925ec/src/althing/plugins/lint.py :19 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/plugins/manager.py :6 import shutil
  • fs DataViking-Tech-Althing-83925ec/src/althing/plugins/manifest.py :7 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/profiles.py :19 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/prompts.py :6 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/registry/cache.py :28 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/reporting/loader.py :18 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/synthbench.py :38 from pathlib import Path
  • fs DataViking-Tech-Althing-83925ec/src/althing/synthbench_submit.py :34 from pathlib import Path

shell / exec 2

  • shell DataViking-Tech-Althing-83925ec/src/althing/cli/commands.py :5523 import subprocess
  • shell DataViking-Tech-Althing-83925ec/src/althing/plugins/hooks.py :15 import subprocess

network 17

  • net DataViking-Tech-Althing-83925ec/src/althing/cli/commands.py :4783 from urllib.parse import urlparse
  • net DataViking-Tech-Althing-83925ec/src/althing/fetch/ladder.py :396 from urllib.parse import urlparse
  • net DataViking-Tech-Althing-83925ec/src/althing/fetch/perimeter.py :25 import socket
  • net DataViking-Tech-Althing-83925ec/src/althing/instrument.py :44 from urllib.parse import urlparse
  • net DataViking-Tech-Althing-83925ec/src/althing/llm/errors.py :10 import httpx
  • net DataViking-Tech-Althing-83925ec/src/althing/llm/providers/anthropic.py :9 import httpx
  • net DataViking-Tech-Althing-83925ec/src/althing/llm/providers/gemini.py :12 import httpx
  • net DataViking-Tech-Althing-83925ec/src/althing/llm/providers/openai_compat.py :11 import httpx
  • net DataViking-Tech-Althing-83925ec/src/althing/llm/providers/openrouter.py :22 import httpx
  • net DataViking-Tech-Althing-83925ec/src/althing/llm/providers/xai.py :12 import httpx
  • net DataViking-Tech-Althing-83925ec/src/althing/mcp/data.py :18 import urllib.parse
  • net DataViking-Tech-Althing-83925ec/src/althing/registry/__init__.py :22 import httpx
  • net DataViking-Tech-Althing-83925ec/src/althing/registry/cache.py :31 import httpx
  • net DataViking-Tech-Althing-83925ec/src/althing/registry/fetch.py :20 import httpx
  • net DataViking-Tech-Althing-83925ec/src/althing/registry/github.py :26 import httpx
  • net DataViking-Tech-Althing-83925ec/src/althing/synthbench.py :41 import httpx
  • net DataViking-Tech-Althing-83925ec/src/althing/synthbench_submit.py :37 import httpx

secrets 1

  • secrets DataViking-Tech-Althing-83925ec/src/althing/cli/commands.py :7170 import getpass

tool registrations 17

  • quick_poll DataViking-Tech-Althing-83925ec/src/althing/integrations/composio.py :256
  • run_panel DataViking-Tech-Althing-83925ec/src/althing/integrations/composio.py :279
  • list_personas DataViking-Tech-Althing-83925ec/src/althing/integrations/composio.py :303
  • list_instruments DataViking-Tech-Althing-83925ec/src/althing/integrations/composio.py :314
  • get_panel_result DataViking-Tech-Althing-83925ec/src/althing/integrations/composio.py :325
  • run_prompt DataViking-Tech-Althing-83925ec/src/althing/mcp/server.py :1622
  • run_panel DataViking-Tech-Althing-83925ec/src/althing/mcp/server.py :1732
  • run_quick_poll DataViking-Tech-Althing-83925ec/src/althing/mcp/server.py :2330
  • list_persona_packs DataViking-Tech-Althing-83925ec/src/althing/mcp/server.py :2815
  • get_persona_pack DataViking-Tech-Althing-83925ec/src/althing/mcp/server.py :2825
  • save_persona_pack DataViking-Tech-Althing-83925ec/src/althing/mcp/server.py :2836
  • list_instrument_packs DataViking-Tech-Althing-83925ec/src/althing/mcp/server.py :2853
  • get_instrument_pack DataViking-Tech-Althing-83925ec/src/althing/mcp/server.py :2865
  • save_instrument_pack DataViking-Tech-Althing-83925ec/src/althing/mcp/server.py :2875
  • extend_panel DataViking-Tech-Althing-83925ec/src/althing/mcp/server.py :2898
  • list_panel_results DataViking-Tech-Althing-83925ec/src/althing/mcp/server.py :3176
  • get_panel_result DataViking-Tech-Althing-83925ec/src/althing/mcp/server.py :3186

declared dependencies 17

  • mcp@>=1.0
  • httpx@>=0.27
  • jinja2@>=3.1
  • puremagic@>=1.20
  • pydantic@>=2.7,<3
  • pyyaml@>=6.0
  • trafilatura@>=1.10
  • composio@>=0.8
  • synthbench@@ git+https://github.com/DataViking-Tech/SynthBench.git
  • s@# `synthbench-contract` job installs the real harness from git.
  • pytest@>=8.0
  • pytest-asyncio@>=0.23
  • pytest-cov@>=6.0
  • ruff@>=0.4
  • mypy@>=1.10
  • pip-audit@>=2.7
  • tomli@>=2.0; python_version<