What it reads

Languages, frameworks and formats

Support is per-signal rather than per-language: a repository in an unlisted language still gets containers, deployment topology and evidence from its manifests and Dockerfiles — it just gets no API contracts or flows.

Languages

Parsed with tree-sitter for symbols, calls, imports and types.

LanguageModule layout read from
RustCargo workspaces and crates
TypeScript / JavaScriptnpm and workspace packages
GoGo modules and package directories
PythonPackages, uv and Poetry workspaces
JavaMaven and Gradle modules
KotlinGradle modules
C#.csproj projects, named by AssemblyName or the file

A file in any other language still counts towards a unit and its Dockerfile, and the book says plainly which parts were not parsed.

HTTP and RPC

Where operations, parameters, request and response models and callers come from.

Gochi, Echo, Gin, Fiber, gorilla/mux, net/http
TypeScriptExpress, Fastify, Koa, Hono, NestJS
PythonFastAPI, Flask, Django, Starlette, aiohttp
RustAxum, Actix Web, Rocket, warp, Poem
JVMSpring MVC, Spring WebFlux, JAX-RS, Quarkus, Micronaut, Dropwizard, Jersey, Helidon, Javalin, Vert.x, Ktor
C#ASP.NET Core attribute-routed controllers and minimal-API Map* routes
Service-to-serviceFeign, MicroProfile Rest Client, Micronaut clients, gRPC stubs, and HTTP client calls matched to the operation they hit
GatewaysSpring Cloud Gateway and Zuul routes read from configuration, including routes declared in a config server

Data

ORMs and mappersJPA/Hibernate, Spring Data, jOOQ, MyBatis, JDBI, Micronaut Data, Panache, Exposed, EF Core, GORM, sqlx, database/sql, Diesel, SeaORM, Prisma, TypeORM, Sequelize, Drizzle, Kysely, Knex, SQLAlchemy, SQLModel, Django ORM, Peewee, Tortoise
MigrationsLiquibase, Flyway, Alembic, raw SQL
StoresPostgreSQL, MySQL, SQLite, MongoDB, Redis, Elasticsearch, S3, Firestore, DynamoDB
Read from themEntities, columns, keys, cardinality, which service reads and which writes, and lifecycles inferred from status fields plus the code that changes them

Messaging and background work

BrokersKafka, RabbitMQ, NATS, SQS, Google Pub/Sub
In-process eventsSpring publishEvent, @EventListener, Spring Modulith @ApplicationModuleListener, Micronaut events
Schedules@Scheduled and cron expressions, resolved through configuration placeholders
TracedA published event is followed into the handlers that consume it, across services

Deployment

Docker ComposeServices, builds, images, ports, volumes, profiles, health checks, depends_on, .env substitution, and overlay files layered with -f
KubernetesDeployment, StatefulSet, DaemonSet, Job, CronJob, Service and Ingress, found by content anywhere in the repository
HelmValue-only templates rendered; a template needing control flow is reported as not read rather than guessed at
Third-party servicesStripe, SendGrid, Twilio, OpenAI, Anthropic, Slack and SMTP, from the client libraries that call them

Known gaps

The rules behind each of these — how units, compose services, calls, datastores and events are recognised, and where each stops — are written out in HEURISTICS.md.

Something missing or wrong for your stack is worth an issue — the templates are built around exactly those two cases.