Atlas helps you onboard to an unfamiliar C++ codebase by starting from meaning rather than filenames. Ask codebase_search a plain-language question, such as how requests are authenticated, and the semantic index returns ranked snippets with file paths across your headers and translation units. glob then maps the directory shape, including where CMakeLists.txt files sit and how include/ relates to src/, and read opens only the two or three files that actually matter. Wide fan-out goes to the explore subagent, which is permissioned read-only, and GoogleTest via ctest gives you a working baseline.
How do I understand a large C++ project without reading every header?
Ask codebase_search a plain-language question rather than opening headers at random. Atlas queries the semantic index and returns ranked snippets with file paths, so a question about how connections are pooled lands on the right class in 2026 even if it lives in a 900-line translation unit.
C++ punishes the read-everything approach harder than most languages, because the declaration you want is in a .hpp under include/ and the definition is in a .cpp under src/, and the two do not have to share a name. Atlas indexes code by AST declarations using tree-sitter, not blind line windows, so a search hit lands on a class, a function, or a template declaration rather than an arbitrary window that might be half a block of preprocessor directives. Atlas searches code with hybrid semantic and keyword retrieval fused by reciprocal rank fusion, which is why describing behavior works even when the identifiers in the code are terse.
What does glob tell me about a CMake project layout?
Atlas runs glob on the top-level directories to see the package layout and naming conventions before opening anything. In a C++ project, 1 glob call shows the root CMakeLists.txt, the per-target CMakeLists.txt files, the include/ and src/ split, and where the vcpkg manifest sits.
The directory shape is the build story in C++, and the build story is most of what you need on day one. Seeing which subdirectories carry their own CMakeLists.txt tells you the target boundaries. Seeing a public include/ tree next to a private src/ tree tells you which headers are the library's contract and which are implementation detail. Seeing a vcpkg manifest tells you where third-party dependencies come from. Atlas maps that shape with glob first, then reads only the files that matter, rather than paging through headers hoping to bump into the important ones.
Can an AI agent explore my C++ repo without touching the build?
Yes. Atlas delegates wide sweeps to the explore subagent through the task tool, and that subagent is defined with a deny-by-default permission set allowing only 6 tools: grep, glob, read, bash, webfetch, and websearch. It cannot modify a header, a .cpp file, or your CMakeLists.txt while it surveys.
Fan-out is the right shape for onboarding work, because most of it is independent reading. Atlas fans out work to subagents that can run in the foreground or in parallel background sessions, so one sweep can trace the network layer while another traces the serialization code. Read-only permissioning is what makes that comfortable in a C++ repository where a stray edit to CMakeLists.txt can break the build for everyone. Every Atlas tool call is permission-gated against allow, ask, and deny rules before it runs, so the guarantee holds at the call level as well as the agent level.
How do I follow a C++ definition from a header to its implementation?
Atlas reads the 2 or 3 files codebase_search ranked highest, then follows imports with the lsp tool's goToDefinition operation. In C++ that traversal carries you from a pure virtual declaration in an include/ header to the concrete definition in a src/ translation unit without grepping for the symbol by hand.
Following the symbol graph is how you build a mental model that survives contact with the code. A C++ interface declared as an abstract class in a header may have three implementations spread across different targets, and only the lsp tool tells you which is which. Recording what you find matters as much as finding it, so Atlas records what you learned as a todowrite list, which means the open questions, the header you did not understand, the template you want to revisit, survive into the next turn instead of being lost when the session moves on.
How do I get a working baseline in a new C++ codebase?
Build the project and run its tests. In a C++ codebase that means GoogleTest through ctest, with vcpkg supplying the third-party dependencies and clang-format keeping any change consistent. A green ctest run on day 1 proves the toolchain works before you start blaming your own code.
A baseline is worth more in C++ than almost anywhere else, because a broken build in an unfamiliar project can be caused by your compiler, your dependency versions, or the code, and you cannot tell which until something passes once. GoogleTest via ctest is the test runner. vcpkg is the package manager, so a missing dependency has a declared source rather than being a mystery. clang-format is the formatter. Atlas reads git branches, status, and diffs, so the recent history of the headers you are learning is available to you, and Atlas computes a unified diff for every file edit and surfaces it for approval before writing.
Step by step
- 01Run atlas in a project with a CMakeLists.txt and let it read your headers, translation units, and build targets.
- 02Ask codebase_search a plain-language question, for example how requests are authenticated; it queries the semantic index and returns ranked snippets with file paths.
- 03Run glob on the top-level directories to see the include/ and src/ split, the per-target CMakeLists.txt files, and the vcpkg manifest.
- 04Read the two or three C++ files codebase_search ranked highest instead of paging through every header.
- 05Follow declarations from a header to their definition with the lsp tool's goToDefinition operation.
- 06Delegate wide sweeps to the explore subagent through the task tool, which has a deny-by-default permission set allowing only grep, glob, read, bash, webfetch, and websearch.
- 07Record open questions as a todowrite list so they survive into the next turn.
- 08Establish a baseline by running GoogleTest via ctest, with vcpkg supplying dependencies, and format any first change with clang-format.
Frequently asked questions
- how to get up to speed on a large c++ codebase fast
- Ask Atlas a plain-language question so codebase_search can return ranked snippets with file paths, run glob to see the CMakeLists.txt targets and the include/ and src/ split, read the top two or three files, and follow declarations with the lsp tool's goToDefinition operation.
- can an ai agent read my c++ project without editing it
- Yes. The Atlas explore subagent is defined with a deny-by-default permission set that only allows grep, glob, read, bash, webfetch, and websearch, so it cannot modify a header, a translation unit, or your CMakeLists.txt while it explores.
- how do i find the implementation of a c++ interface
- Use Atlas: codebase_search ranks the candidate declarations, and the lsp tool's goToDefinition operation follows a pure virtual declaration in an include/ header to the concrete definition in a src/ translation unit.
- how does atlas chunk c++ files for semantic search
- Atlas indexes code by AST declarations using tree-sitter, not blind line windows, so a hit lands on a class, function, or template declaration instead of an arbitrary slice that might be half a block of preprocessor directives.
- what should i run first in an unfamiliar cmake project
- Run the test suite. In C++ that means GoogleTest via ctest, with vcpkg providing dependencies. A passing run proves the toolchain and the dependency versions work, which separates environment problems from code problems later.
- how do i keep track of what i learned exploring a c++ repo
- Record what you learned as a todowrite list in Atlas, so open questions about a template or a header you did not understand survive into the next turn instead of disappearing when the session context moves on.
- does atlas run multiple exploration agents at once
- Atlas fans out work to subagents that can run in the foreground or in parallel background sessions. Wide sweeps of a C++ repo are delegated to the explore subagent through the task tool, which is read-only by permission.
Try Atlas in your terminal
The terminal-native AI coding agent. Free core, single binary.
Install AtlasRelated guides
Onboard to an Unfamiliar Codebase with Atlas in 2026
How to onboard to an unfamiliar codebase with Atlas in 2026: use codebase_search, glob, read, lsp, task, and todowrite to build a mental model fast.
Atlas for C++ in 2026
In 2026, C++ developers adopt Atlas, the terminal-native AI coding agent, to enhance productivity. Atlas offers secure, context-aware assistance for modern C++ projects, integrating with CMake and ensuring code quality
Locate Where a Behavior Is Implemented in C++ with Atlas (2026)
How Atlas finds the C++ file and symbol behind a behavior in 2026: codebase_search for meaning, ripgrep for exact text, and the lsp tool for the symbol graph.
Run the test suite and triage the failures in C++ with Atlas (2026)
Triage a red C++ suite in 2026 with Atlas: run GoogleTest via ctest through bash, read the full saved log past the 2000 line truncation, and group causes in todowrite.
Run Atlas Headless in CI for C++ Projects in 2026
In 2026, C++ developers can run Atlas headless in CI pipelines to automate code tasks. Get machine-readable output, integrate with vcpkg and GoogleTest via ctest, and ensure safety.
Trace a Runtime Bug From a Stack Trace in C++ With Atlas (2026)
How to trace a C++ runtime bug from a stack trace with Atlas in 2026: read each frame at its offset, grep for the error string, and prove the fix with GoogleTest.
Extract a Shared Helper From Duplicated C++ Code With Atlas (2026)
Duplication in C++ is semantic, not textual. Atlas finds near-duplicate logic with codebase_search, writes one header, and swaps each copy with apply_patch.
Debug a single failing test in C++ with Atlas (2026)
Debug one failing GoogleTest case in C++ with Atlas in 2026: run it isolated through ctest, walk the call path with lsp, and fix the code rather than the assertion.