TL;DR: faf git <url> now grounds every slot in the
repo's own files — docker-compose services, Makefile targets, the
sibling app dirs where the real stack lives. A polyglot repo (Django + React + Go, no npm
workspace) stops reporting type: library / main_language: JavaScript.
In Plain English
Old state. Point faf git at a repo whose real code lives
in folders — backend/, frontend/, gateway/ — and
it only read the root. The root was a package.json with husky in it. So:
"it's a JavaScript library." On a Django + React + Go platform, every line was wrong.
Fix. It walks one level in. Sibling dirs, each with their own manifest,
become type: fullstack with the real languages and a # found: polyglot: line that shows its work. It reads docker-compose.yml for the services that are actually running, and the Makefile for the real test command.
New state. Point it at a real repo and every slot is backed by a file you can open — a checkable fact, not a guess.
bunx faf git future-agi/future-agiBefore → after
Same command, same repo (future-agi/future-agi — Django + React + Go):
typelibraryfullstackmain_languageJavaScriptPython (Django · backend); Go (backend); TypeScript (React · frontend)stack.database—PostgreSQL · ClickHousecommands.test—cd futureagi && make testgoal"Repo-level tooling…""" (honest — left for a human)# found: polyglot: agentcc-gateway/ (Go), fi-collector/ (Go), frontend/
(TypeScript), futureagi/ (Python) — the CLI shows why it classified the way it did.
What 7.10.0 reads
- Sibling app dirs — ≥2 folders each with their own language manifest, a
frontend and a backend among them →
fullstack, aggregatedmain_language, polyglot rationale. No new project type — monorepo / enterprise slots are a separate tool. docker-compose*.yml— service images →stack.database(postgres / clickhouse / mysql),stack.runtime(kafka / rabbitmq / temporal),stack.hosting(Docker Compose).Makefile/justfile/Taskfile— targets →commands.test/build/lint. Finds a nested one (cd futureagi && make test) and prefers the primary backend's..env.example→security.secrets+security.example.- Cleaner prose extraction — HTML comment blocks (asset notes, TODO markers) and rows of nav links no longer leak into a slot.
File-facts lead. The README still fills the goal and the 6 Ws — the human story a manifest doesn't hold.
Try it
Any GitHub repo — no clone, no config:
bunx faf git facebook/react bunx faf git future-agi/future-agiPin the version:
bunx faf-cli@7.10.0 git <owner/repo>Both faf and faf-cli are on npm at 7.10.0 — same bits. brew install wolfe-jam/faf/faf-cli for a kept install.
Where it came from
future-agi/future-agi#2443 — a contributor asked for an AGENTS.md authored from a project.faf. Running faf git on that repo returned library / JavaScript / no stack — a wrong answer, on the free CLI,
about a real platform. FAF don't lie. The fix was to stop looking only at
the root.
Technical details
- Version: 7.10.0 (September 2, 2026) —
faf-cli+faf - Tests: 1384 / 1384
- Score: ✪ Trophy 100% (dogfooded)
- New readers:
docker-compose,Makefile/justfile/Taskfile,.env.example, sibling-dir manifests - Not in scope: a
monorepoproject type, 33-slot always-on, structured per-package fields — a separate tool - Platforms: CI matrix ubuntu + macOS
Feedback welcome
Questions, nits, suggestions — guide the next version. Tell us what you want to see.
