github Python analyzed 974bb46

maestrokj/Achilles

github

Self-hosted AI platform for companies: connect any provider and model, run and govern agents, track token spend, and ground every answer in your own knowledge. Postgres-only, no external calls.

maintainer
maestrokj
licence
AGPL-3.0
first seen
2026-08-13
last seen
2026-08-28
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 1 tools
transport stdio · streamable-http counts 1 tools · 0 res · 0 prompts permission surface via code analysis

tools

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

analyzed commit 974bb46 · analyzer v33 · 2w ago

skills & prompt files 1

danger signals4

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

code files: 811

filesystem 21

  • fs maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/services/tokenizer.py :16 from pathlib import Path
  • fs maestrokj-Achilles-974bb46/backend/src/achilles/auth/security/passwords.py :87 """HIBP k-anonymity check; unavailable → fail open (length+zxcvbn still apply)."""
  • fs maestrokj-Achilles-974bb46/backend/src/achilles/config.py :2 from pathlib import Path
  • fs maestrokj-Achilles-974bb46/backend/src/achilles/harvester/pipeline/runner.py :67 dlq_keys: set[tuple[str, str]] = field(default_factory=set) # open (type, native id)
  • fs maestrokj-Achilles-974bb46/backend/src/achilles/knowledge_store/jobs.py :13 from pathlib import Path
  • fs maestrokj-Achilles-974bb46/backend/src/achilles/knowledge_store/services/backup_storage.py :9 import shutil
  • fs maestrokj-Achilles-974bb46/backend/src/achilles/knowledge_store/services/backups.py :10 from pathlib import Path
  • fs (weak) maestrokj-Achilles-974bb46/backend/tests/admin/integration/test_maintenance.py :33 # Login stays open (someone must be able to reach the client at all)…
  • fs (weak) maestrokj-Achilles-974bb46/backend/tests/ai_foundation/integration/test_tokenizer_seam.py :8 from pathlib import Path
  • fs (weak) maestrokj-Achilles-974bb46/backend/tests/conftest.py :23 from pathlib import Path # noqa: E402
  • fs (weak) maestrokj-Achilles-974bb46/backend/tests/knowledge_store/api/test_api_admin_ops.py :3 from pathlib import Path
  • fs (weak) maestrokj-Achilles-974bb46/backend/tests/knowledge_store/conftest.py :8 from pathlib import Path
show 9 more
  • fs (weak) maestrokj-Achilles-974bb46/backend/tests/knowledge_store/integration/test_backup_restore.py :8 import shutil
  • fs (weak) maestrokj-Achilles-974bb46/backend/tests/knowledge_store/integration/test_backup_s3.py :9 from pathlib import Path
  • fs (weak) maestrokj-Achilles-974bb46/backend/tests/knowledge_store/integration/test_jobs.py :8 import shutil
  • fs (weak) maestrokj-Achilles-974bb46/backend/tests/query_engine/integration/test_cache_gate.py :1 """Exact RAG cache: per-identity keys, normalization, fail-open (P1)."""
  • fs (weak) maestrokj-Achilles-974bb46/docs/_tools/docs_seo.py :39 from pathlib import Path
  • fs (weak) maestrokj-Achilles-974bb46/docs/architecture/_tools/docs_map.py :53 from pathlib import Path
  • fs (weak) maestrokj-Achilles-974bb46/docs/ru/architecture/_tools/docs_map.py :53 from pathlib import Path
  • fs maestrokj-Achilles-974bb46/embeddings/app/manager.py :17 from pathlib import Path
  • fs maestrokj-Achilles-974bb46/embeddings/app/memory.py :14 from pathlib import Path

network 127

  • net maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/services/discovery.py :11 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/services/embeddings_client.py :14 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/services/tokenizer.py :18 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/tools/fetch_url.py :11 import socket
  • net maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/tools/web_search.py :10 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/api/csrf.py :9 from urllib.parse import urlsplit
  • net maestrokj-Achilles-974bb46/backend/src/achilles/auth/security/passwords.py :13 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/harvester/connectors/gitlab.py :14 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/harvester/connectors/http.py :18 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/harvester/pipeline/throttle.py :22 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/knowledge_store/services/backup_storage.py :15 from urllib.parse import unquote, urlparse
  • net maestrokj-Achilles-974bb46/backend/src/achilles/mattermost/client.py :8 import httpx
show 28 more
  • net maestrokj-Achilles-974bb46/backend/src/achilles/mattermost/jobs.py :14 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/mattermost/listener.py :25 from urllib.parse import urlsplit, urlunsplit
  • net maestrokj-Achilles-974bb46/backend/src/achilles/mattermost/schemas.py :10 from urllib.parse import urlparse
  • net maestrokj-Achilles-974bb46/backend/src/achilles/mattermost/service.py :8 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/notifications/webhooks.py :14 from urllib.parse import urlsplit
  • net maestrokj-Achilles-974bb46/backend/src/achilles/slack/client.py :9 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/slack/jobs.py :12 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/slack/service.py :5 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/telegram/client.py :8 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/telegram/jobs.py :13 import httpx
  • net maestrokj-Achilles-974bb46/backend/src/achilles/telegram/service.py :8 from urllib.parse import urlparse
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/admin/integration/test_admin_access.py :4 from httpx import AsyncClient
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/admin/integration/test_dashboard.py :7 from httpx import AsyncClient
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/admin/integration/test_maintenance.py :4 from httpx import AsyncClient
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/admin/integration/test_platform_settings.py :5 from httpx import AsyncClient
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/agent_engine/api/test_api_access.py :4 from httpx import AsyncClient
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/agent_engine/api/test_api_admin.py :5 from httpx import AsyncClient
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/agent_engine/api/test_api_agents.py :5 from httpx import AsyncClient
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/agent_engine/integration/test_run_agent.py :8 from httpx import Response
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/ai_foundation/api/test_api_discovery.py :5 from httpx import AsyncClient, ConnectError, Response
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/ai_foundation/api/test_api_registry.py :5 from httpx import AsyncClient
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/ai_foundation/api/test_api_tools.py :3 import httpx
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/ai_foundation/api/test_assignment_dim_guard.py :4 from httpx import AsyncClient
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/ai_foundation/api/test_assignment_size_guard.py :9 import httpx
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/ai_foundation/api/test_assignment_warmup.py :5 import httpx
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/ai_foundation/api/test_prompt_settings.py :4 from httpx import AsyncClient
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/ai_foundation/conftest.py :11 from httpx import Response
  • net (weak) maestrokj-Achilles-974bb46/backend/tests/ai_foundation/integration/test_token_usage.py :8 from httpx import AsyncClient

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

database 262

  • db maestrokj-Achilles-974bb46/backend/alembic/env.py :9 from sqlalchemy import Connection, pool
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260702_120000-auth_security_schema.py :12 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260702_140000-knowledge_store_schema.py :17 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260703_120000-ai_foundation_schema.py :17 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260704_120000-knowledge_vectors.py :15 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260705_120000-query_engine_schema.py :15 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260706_120000-harvester_schema.py :17 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260707_120000-agent_engine_schema.py :18 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260708_120000-slack_settings.py :12 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260709_120000-smtp_settings.py :12 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260710_120000-notifications_schema.py :16 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260711_120000-telegram_settings.py :14 import sqlalchemy as sa
show 28 more
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260712_120000-mattermost_settings.py :14 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/alembic/versions/20260713_120000-user_last_chat_model.py :14 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/admin/dashboard.py :14 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/admin/maintenance.py :13 from redis.asyncio import Redis
  • db maestrokj-Achilles-974bb46/backend/src/achilles/admin/service.py :3 from redis.asyncio import Redis
  • db maestrokj-Achilles-974bb46/backend/src/achilles/agent_engine/jobs.py :13 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/agent_engine/models.py :12 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/agent_engine/router.py :12 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/agent_engine/runs.py :11 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/agent_engine/runtime/prompt.py :9 from sqlalchemy.ext.asyncio import AsyncSession
  • db maestrokj-Achilles-974bb46/backend/src/achilles/agent_engine/runtime/tools.py :14 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/agent_engine/scheduler/tick.py :13 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/agent_engine/service.py :14 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/models.py :15 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/services/embeddings_client.py :15 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/services/prompt.py :14 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/services/registry.py :10 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/services/tokenizer.py :19 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/services/tools_admin.py :12 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/services/usage.py :18 from sqlalchemy.dialects.postgresql import insert as pg_insert
  • db maestrokj-Achilles-974bb46/backend/src/achilles/ai_foundation/services/usage_read.py :18 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/api/health.py :8 from redis.asyncio import Redis
  • db maestrokj-Achilles-974bb46/backend/src/achilles/api/pagination.py :15 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/api/problems.py :13 import asyncpg
  • db maestrokj-Achilles-974bb46/backend/src/achilles/api/rate_limit.py :10 from redis.asyncio import Redis
  • db maestrokj-Achilles-974bb46/backend/src/achilles/auth/dependencies.py :14 from sqlalchemy.ext.asyncio import AsyncSession
  • db maestrokj-Achilles-974bb46/backend/src/achilles/auth/models.py :11 import sqlalchemy as sa
  • db maestrokj-Achilles-974bb46/backend/src/achilles/auth/routes/admin_users.py :12 import sqlalchemy as sa

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

tool registrations 1

  • search_knowledge maestrokj-Achilles-974bb46/backend/src/achilles/mcp/server.py :45

declared dependencies 19

  • fastapi@>=0.115
  • uvicorn@>=0.30
  • pydantic-settings@>=2.4
  • sqlalchemy@>=2.0.20
  • s@transitive dep
  • websockets@>=14
  • pytest@>=8.0
  • pytest-asyncio@>=0.24
  • pytest-cov@>=6.0
  • pytest-xdist@>=3.6
  • httpx@>=0.27
  • asgi-lifespan@>=2.1
show 7 more
  • testcontainers@>=4.9
  • time-machine@>=2.16
  • respx@>=0.22
  • schemathesis@>=3.39
  • ruff@>=0.8
  • pyright@>=1.1
  • pre-commit@>=4.0