Core concepts
The .atmos folder
Atmos keeps everything for a project in .atmos/ at the root of the scanned tree: your custom rules, the scan cache, the advisory database and the agent hook.
What lives inside#
.atmos/ ├── rules/ # your custom rules, loaded on every scan, committed ├── cache/ # warm scan cache, local to this machine ├── osv-db/ # local advisory database (SCA) ├── hooks/ # agent scan hook, installed by the skill └── .gitignore # written by the CLI to keep cache/ out of git
Atmos creates the directory only when something needs it, such as the first warm scan or the first advisory database download. When you scan a single file instead of a directory, .atmos is created next to it.
rules/#
Every YAML rule file in .atmos/rules/ loads on every scan. This is where your team encodes its own conventions, like which middleware guards routes or which query builder is approved. Because the directory is committed, every developer, every CI run and every coding agent scans with the same rules. The format and the load order are in custom rules.
cache/#
The cache behind warm scans. The flags that move it or bypass it are in the CLI reference.
osv-db/#
The local advisory database used by SCA. Atmos downloads it on first use and refreshes it with atmos db update. The flags that relocate it or keep advisory lookups local are in the CLI reference.
hooks/#
Home of atmos-scan.sh, the scan hook that the agent skill installs so your coding agent's changes are scanned after every turn. It lives inside .atmos so it is committed, reviewed and identical for everyone who clones the repository.
What to commit#
| Path | Commit? | Why |
|---|---|---|
| .atmos/rules/ | yes | Your security policy, reviewed like code. |
| .atmos/hooks/ | yes | Same hook for every clone and every agent. |
| .atmos/cache/ | no | Local to this machine. The CLI writes .atmos/.gitignore to keep it out. |
| .atmos/osv-db/ | no | Large and refreshed on its own. Add osv-db/ to .atmos/.gitignore. |