github Python analyzed 9893493 deep scan · partial (315/2,422 files) unconfirmed MCP

Kiln-AI/Kiln

github

Build, Evaluate, and Optimize AI Systems. Includes evals, RAG, agents, fine-tuning, synthetic data generation, dataset management, MCP, and more.

maintainer
Kiln-AI
licence
NOASSERTION
first seen
2026-06-01
last seen
2026-09-10
releases · 30d
1
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution ×3 in Kiln-AI/Kiln
  2. HIGH code analysis flagged dynamic code execution ×3 in Kiln-AI/Kiln
  3. HIGH code analysis flagged dynamic code execution ×3 in Kiln-AI/Kiln
  4. HIGH code analysis flagged dynamic code execution ×3 in Kiln-AI/Kiln
  5. HIGH code analysis flagged dynamic code execution ×3 in Kiln-AI/Kiln
  6. HIGH code analysis flagged dynamic code execution ×3 in Kiln-AI/Kiln
  7. HIGH code analysis flagged dynamic code execution ×3 in Kiln-AI/Kiln
  8. HIGH code analysis flagged dynamic code execution ×3 in Kiln-AI/Kiln
  9. HIGH code analysis flagged dynamic code execution ×3 in Kiln-AI/Kiln
  10. HIGH code analysis flagged dynamic code execution ×3 in Kiln-AI/Kiln
  11. HIGH code analysis flagged dynamic code execution ×3 in Kiln-AI/Kiln
  12. HIGH code analysis flagged dynamic code execution ×2 in Kiln-AI/Kiln
  13. HIGH code analysis flagged dynamic code execution in Kiln-AI/Kiln
  14. HIGH code analysis flagged dynamic code execution in Kiln-AI/Kiln
  15. HIGH code analysis flagged dynamic code execution in Kiln-AI/Kiln
  16. HIGH code analysis flagged dynamic code execution in Kiln-AI/Kiln
  17. HIGH code analysis flagged dynamic code execution in Kiln-AI/Kiln
  18. HIGH code analysis flagged dynamic code execution in Kiln-AI/Kiln
  19. HIGH code analysis flagged dynamic code execution in Kiln-AI/Kiln
  20. HIGH code analysis flagged dynamic code execution in Kiln-AI/Kiln
capabilities 0 tools
transport stdio · streamable-http · http · sse 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 9893493 · analyzer v33 · 2h ago

skills & prompt files 11

danger signals5

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

code files: 1106

filesystem 118

  • fs (weak) Kiln-AI-Kiln-9893493/.agents/scripts/provider_utils.py :15 from pathlib import Path
  • fs (weak) Kiln-AI-Kiln-9893493/.agents/skills/kiln-check-deprecation/scripts/check_provider.py :43 from pathlib import Path
  • fs (weak) Kiln-AI-Kiln-9893493/.agents/skills/kiln-check-finetune-deprecation/scripts/check_finetune.py :22 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/desktop.py :97 webbrowser.open(f"http://localhost:{self.port}")
  • fs Kiln-AI-Kiln-9893493/app/desktop/desktop_server.py :9 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/clone.py :5 import shutil
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/conftest.py :1 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/git_sync_api.py :5 import shutil
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/git_sync_manager.py :8 from pathlib import Path
  • fs (weak) Kiln-AI-Kiln-9893493/app/desktop/git_sync/integration_tests/conftest.py :12 from pathlib import Path
  • fs (weak) Kiln-AI-Kiln-9893493/app/desktop/git_sync/integration_tests/test_file_operations.py :35 os.remove(p / "to_delete.kiln")
  • fs (weak) Kiln-AI-Kiln-9893493/app/desktop/git_sync/integration_tests/test_no_write_lock_batch.py :7 from pathlib import Path
show 28 more
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/middleware.py :6 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/registry.py :5 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/save_context.py :3 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/test_background_sync.py :2 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/test_clone.py :3 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/test_end_to_end.py :8 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/test_git_sync_api.py :2 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/test_git_sync_manager.py :3 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/git_sync/test_save_context.py :4 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/test_kiln_server_client.py :2 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/studio_server/chat/test_integration.py :6 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/studio_server/finetune_api.py :760 return StreamingResponse(open(path, "rb"), headers=headers)
  • fs Kiln-AI-Kiln-9893493/app/desktop/studio_server/jobs/error_log.py :5 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/studio_server/jobs/test_error_log.py :36 with error_log.error_log_path(run_id).open("a", encoding="utf-8") as f:
  • fs Kiln-AI-Kiln-9893493/app/desktop/studio_server/prompt_optimization_job_api.py :5 from pathlib import Path as PathlibPath
  • fs Kiln-AI-Kiln-9893493/app/desktop/studio_server/test_finetune_api.py :2 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/studio_server/test_prompt_optimization_job_api.py :2984 # Mock shutil.rmtree (which delete() uses internally) to raise an error
  • fs Kiln-AI-Kiln-9893493/app/desktop/studio_server/test_server.py :142 with open(full_path, "w") as f:
  • fs Kiln-AI-Kiln-9893493/app/desktop/studio_server/test_settings_api.py :44 with open(settings_file, "w") as f:
  • fs Kiln-AI-Kiln-9893493/app/desktop/studio_server/test_tool_api.py :4 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/studio_server/test_webhost.py :22 with open(os.path.join(d, "404.html"), "w", encoding="utf-8") as f:
  • fs Kiln-AI-Kiln-9893493/app/desktop/test_dev_server.py :7 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/app/desktop/test_start_background_syncs.py :1 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/conftest.py :2 import shutil
  • fs Kiln-AI-Kiln-9893493/libs/core/kiln_ai/adapters/chunkers/test_semantic_chunker.py :3 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/libs/core/kiln_ai/adapters/eval/test_code_eval_bridge.py :312 " open(os.path.join(RENDEZVOUS, output), 'w').close()\n"
  • fs Kiln-AI-Kiln-9893493/libs/core/kiln_ai/adapters/eval/test_sandbox_worker_perf.py :18 from pathlib import Path
  • fs Kiln-AI-Kiln-9893493/libs/core/kiln_ai/adapters/eval/trace_index.py :17 from pathlib import Path

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

shell / exec 14

  • shell (weak) Kiln-AI-Kiln-9893493/.agents/scripts/provider_utils.py :13 import subprocess
  • shell (weak) Kiln-AI-Kiln-9893493/.agents/skills/release-digest/scripts/gather_changes.py :13 import subprocess
  • shell Kiln-AI-Kiln-9893493/app/desktop/git_sync/git_sync_manager.py :3 import subprocess
  • shell Kiln-AI-Kiln-9893493/app/desktop/test_dev_server.py :4 import subprocess
  • shell Kiln-AI-Kiln-9893493/libs/core/kiln_ai/adapters/eval/test_sandbox_worker_perf.py :16 import subprocess
  • shell Kiln-AI-Kiln-9893493/libs/core/kiln_ai/adapters/test_remote_config.py :6 import subprocess
  • shell Kiln-AI-Kiln-9893493/libs/core/kiln_ai/tools/mcp_session_manager.py :4 import subprocess
  • shell Kiln-AI-Kiln-9893493/libs/core/kiln_ai/tools/test_mcp_session_manager.py :2 import subprocess
  • shell Kiln-AI-Kiln-9893493/libs/core/kiln_ai/utils/filesystem.py :2 import subprocess
  • shell Kiln-AI-Kiln-9893493/libs/core/kiln_ai/utils/test_import_layering.py :16 import subprocess
  • shell (weak) Kiln-AI-Kiln-9893493/specs/projects/eval_splits_v1_v2/phase2_mutation_sweep.py :12 import subprocess
  • shell (weak) Kiln-AI-Kiln-9893493/specs/projects/eval_splits_v1_v2/phase3_mutation_sweep.py :12 import subprocess
show 2 more
  • shell (weak) Kiln-AI-Kiln-9893493/specs/projects/eval_splits_v1_v2/phase4_mutation_sweep.py :26 import subprocess
  • shell (weak) Kiln-AI-Kiln-9893493/specs/projects/eval_splits_v1_v2/phase6_mutation_sweep.py :15 import subprocess

network 76

  • net (weak) Kiln-AI-Kiln-9893493/.agents/scripts/provider_utils.py :17 from urllib.error import HTTPError, URLError
  • net (weak) Kiln-AI-Kiln-9893493/.agents/skills/kiln-check-deprecation/scripts/check_provider.py :44 from urllib.error import HTTPError, URLError
  • net (weak) Kiln-AI-Kiln-9893493/.agents/skills/kiln-check-deprecation/scripts/extract_models.py :18 from urllib.request import Request, urlopen
  • net Kiln-AI-Kiln-9893493/app/desktop/git_sync/oauth.py :9 from urllib.parse import urlencode
  • net Kiln-AI-Kiln-9893493/app/desktop/git_sync/test_oauth.py :5 from urllib.parse import parse_qs, urlparse
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/auth/check_entitlements_v1_check_entitlements_get.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/auth/create_api_key_v1_create_api_key_post.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/auth/secure_ping_v1_ping_get.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/auth/verify_api_key_v1_verify_api_key_get.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/chat/delete_session_v1_chat_sessions_session_id_delete.py :3 from urllib.parse import quote
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/chat/get_client_version_policy_v1_chat_version_policy_get.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/chat/get_session_v1_chat_sessions_session_id_get.py :3 from urllib.parse import quote
show 28 more
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/chat/handle_chat_v1_chat_post.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/chat/list_sessions_v1_chat_sessions_get.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/copilot/batch_plan_v1_copilot_batch_plan_post.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/copilot/clarify_spec_v1_copilot_clarify_spec_post.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/copilot/draft_input_data_guide_v1_copilot_draft_input_data_guide_post.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/copilot/generate_batch_v1_copilot_generate_batch_post.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/copilot/question_spec_v1_copilot_question_spec_post.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/copilot/refine_spec_v1_copilot_refine_spec_post.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/copilot/refine_spec_with_answers_v1_copilot_refine_spec_with_answers_post.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/health/health_health_get.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/health/ping_ping_get.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/jobs/check_prompt_optimization_model_supported_v1_jobs_prompt_optimization_job_check_model_supported_get.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/jobs/get_data_guide_job_result_v1_jobs_data_guide_job_job_id_result_get.py :3 from urllib.parse import quote
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/jobs/get_job_status_v1_jobs_job_type_job_id_status_get.py :3 from urllib.parse import quote
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/jobs/get_prompt_optimization_job_result_v1_jobs_prompt_optimization_job_job_id_result_get.py :3 from urllib.parse import quote
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/jobs/get_sample_job_result_v1_jobs_sample_job_job_id_result_get.py :3 from urllib.parse import quote
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/jobs/start_data_guide_job_v1_jobs_data_guide_job_start_post.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/jobs/start_prompt_optimization_job_v1_jobs_prompt_optimization_job_start_post.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/api/jobs/start_sample_job_v1_jobs_sample_job_start_post.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/client.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_ai_server_client/types.py :17 # The types that `httpx.Client(files=)` can accept, copied from that library.
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/kiln_server_client.py :3 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/api_client/test_kiln_server_client.py :5 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/batch_plan_api.py :4 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/chat/constants.py :3 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/chat/helpers.py :4 PATCH_ASYNC_CLIENT = "app.desktop.studio_server.chat.stream_session.httpx.AsyncClient"
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/chat/routes.py :6 import httpx
  • net Kiln-AI-Kiln-9893493/app/desktop/studio_server/chat/stream_session.py :7 import httpx

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

secrets 7

  • secrets Kiln-AI-Kiln-9893493/app/desktop/studio_server/chat/test_integration.py :315 if key := os.environ.get("KILN_COPILOT_API_KEY"):
  • secrets Kiln-AI-Kiln-9893493/libs/core/kiln_ai/adapters/repair/test_repair_task.py :222 if os.getenv("GROQ_API_KEY") is None:
  • secrets Kiln-AI-Kiln-9893493/libs/core/kiln_ai/adapters/test_prompt_adaptors.py :35 if os.getenv("GROQ_API_KEY") is None:
  • secrets Kiln-AI-Kiln-9893493/libs/core/kiln_ai/adapters/vector_store_loaders/test_lancedb_loader.py :205 lancedb_api_key = os.getenv("LANCE_DB_API_KEY")
  • secrets Kiln-AI-Kiln-9893493/libs/core/kiln_ai/utils/config.py :2 import getpass
  • secrets Kiln-AI-Kiln-9893493/libs/core/kiln_ai/utils/test_config.py :1 import getpass
  • secrets Kiln-AI-Kiln-9893493/libs/server/kiln_server/test_run_api.py :2279 if not os.environ.get("OPENROUTER_API_KEY"):

declared dependencies 5

  • certifi@>=2024.8.30
  • jq@>=1.11.0
  • kiln-ai@==0.5.3
  • kiln-server@*
  • kiln-studio-desktop@*

perm:untrusted 1

  • untrusted Kiln-AI-Kiln-9893493/app/desktop/studio_server/provider_api.py :77 tags = requests.get(base_url + "/api/tags", timeout=5).json()