# file locations

## project and workspace

| path | purpose |
| --- | --- |
| `antil.yaml` | committed project configuration |
| `.antil/local.yaml` | optional uncommitted Workspace overlay |
| `.antil/…` | recommended secret files; keep excluded from git |
| git common directory | Project / worktree identity shared by checkouts |
| git `info/exclude` | local exclusion modified only when requested by `init --exclude-local` |

## installation

Home precedence: CLI `--home`, then `ANTIL_HOME`, then `~/.local/state/antil`. Home is canonicalized so symlink spellings use the same Installation lock and socket directory.

| relative to home | purpose |
| --- | --- |
| `state.db` | SQLite state and durable event record |
| `daemon.lock` | single daemon lock for this physical home |
| `daemon.log` | daemon diagnostics |
| `logs/run_….log` | managed Run output; exact path returned in JSON |
| `logs/runner-ses_….log` | runner diagnostics |
| `private/` | installation-private resource credential files, mode `0600` |

The home and runtime directories are created with mode `0700`. Resource credentials remain references in projections. Do not edit SQLite or credential files as a recovery workflow.

## runtime sockets

Sockets live under `/tmp/antil-<uid>-<home-hash>/` to fit Unix socket path limits. The derived directory uses a hash of the canonical home, mode `0700`.

| path in runtime directory | purpose |
| --- | --- |
| `daemon.sock` | CLI to daemon API |
| `runner-<session-id>.sock` | Session runner API |
| `runner-<session-id>.lock` | runner ownership lock |

A Session end retains git worktrees and database data. Automatic TTL deletion is not implemented. See [explicit prune](/docs/reference/cli/#antil-prune).
