Run synthetic focus groups and user research panels using AI personas. CLI tool, Python library, any LLM.
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution in DataViking-Tech/Althing
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
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
- agent-rules DataViking-Tech-Althing-83925ec/CLAUDE.md
- skill DataViking-Tech-Althing-83925ec/site/.well-known/agent-skills/althing/SKILL.md
- skill DataViking-Tech-Althing-83925ec/site/.well-known/agent-skills/concept-test/SKILL.md
- skill DataViking-Tech-Althing-83925ec/site/.well-known/agent-skills/focus-group/SKILL.md
- skill DataViking-Tech-Althing-83925ec/site/.well-known/agent-skills/name-test/SKILL.md
- skill DataViking-Tech-Althing-83925ec/site/.well-known/agent-skills/pricing-probe/SKILL.md
- skill DataViking-Tech-Althing-83925ec/site/.well-known/agent-skills/survey-prescreen/SKILL.md
- skill DataViking-Tech-Althing-83925ec/skills/althing/SKILL.md
- skill DataViking-Tech-Althing-83925ec/skills/concept-test/SKILL.md
- skill DataViking-Tech-Althing-83925ec/skills/focus-group/SKILL.md
- skill DataViking-Tech-Althing-83925ec/skills/name-test/SKILL.md
- skill DataViking-Tech-Althing-83925ec/skills/pricing-probe/SKILL.md
- skill DataViking-Tech-Althing-83925ec/skills/survey-prescreen/SKILL.md
- skill DataViking-Tech-Althing-83925ec/src/althing/agent_assets/skills/althing/SKILL.md
- skill DataViking-Tech-Althing-83925ec/src/althing/agent_assets/skills/concept-test/SKILL.md
- skill DataViking-Tech-Althing-83925ec/src/althing/agent_assets/skills/focus-group/SKILL.md
- skill DataViking-Tech-Althing-83925ec/src/althing/agent_assets/skills/name-test/SKILL.md
- skill DataViking-Tech-Althing-83925ec/src/althing/agent_assets/skills/pricing-probe/SKILL.md
- skill DataViking-Tech-Althing-83925ec/src/althing/agent_assets/skills/survey-prescreen/SKILL.md
danger signals2
- dynamic code execution __import__() DataViking-Tech-Althing-83925ec/tests/test_rename_shims.py :102
legacy = __import__(alias) - suspicious endpoint 1.1.1.1 DataViking-Tech-Althing-83925ec/tests/test_fetch.py :262
extract("https://1.1.1.1/", cfg)
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<