CLI Reference
TL;DR: This is the full command reference for titi, a .NET monorepo orchestration CLI. For each command you'll find flags, examples, and exit codes.
This page covers all titi commands. For the big picture, see the architecture overview.
Usage
titi <command> [options]
titi open <package-id>
Generate a transient .slnx solution with one project's transitive dependency closure
swapped from binary (NuGet) to source (ProjectReference).
The swap retains the original PackageReference with ExcludeAssets=All and injects a
ProjectReference alongside, controlled by InTitiContext=true.
Example:
$ titi open Orion.Core.Data
{
"solutionPath": ".titi/solutions/Orion.Core.Data.slnx",
"swapped": [
{ "packageId": "Orion.Core.Data", "localSourcePath": "/repo/Orion.Core.Data/Orion.Core.Data.csproj" }
],
"retained": [],
"projectCount": 1
}
Open the generated .slnx in your IDE or build it with dotnet build.
titi affected [--base <ref>]
List projects affected by current changes. Runs git diff between refs, maps changed
files to projects via the dependency graph, and computes transitive impact. With test
edges available, includes per-test selection results and confidence score.
Flags:
--base <ref>— Base git ref to diff against (default:HEAD~1)
Example:
$ titi affected --base HEAD~3
{
"changedFiles": ["src/Orion.Core.Data/Parser.cs"],
"directlyAffected": [{ "packageId": "Orion.Core.Data", "path": "..." }],
"transitivelyAffected": [{ "packageId": "Orion.App", "path": "..." }],
"totalAffected": 2,
"selectedTests": [...],
"confidence": 1.0
}
titi tests list <csproj>
Enumerate test items in a project. Invokes dotnet test --list-tests and parses the
console output into TestItem records. Detects xUnit, NUnit, and MSTest from executor URI.
Results are cached in .titi/test-cache/items/<package>/items.json, keyed by a
content fingerprint of the .csproj + all .cs files. Subsequent runs skip
dotnet test when the fingerprint is unchanged; editing a source file invalidates
the cache automatically.
Example:
$ titi tests list tests/Orion.UnitTests/Orion.UnitTests.csproj
{ "tests": [{ "testId": "...", "className": "...", "methodName": "...", "framework": "xunit", "tier": "unit" }] }
titi tests ingest <trx> [--coverage <cobertura>]
Parse TRX test results and Cobertura coverage XML, building TestToSourceEdge records
and caching them in .titi/test-cache/edges/edges.edn on successful completion.
Flags:
--coverage <path>— Path to Cobertura coverage XML (enables edge building)
Error handling: If the TRX file is unparseable, titi exits 1 and leaves the
existing edge index untouched — a malformed ingest never overwrites prior good data.
The cache is only written when parsing succeeds.
titi tests record
Run all test projects with coverage collection, then ingest results.
Incremental: Only projects whose source fingerprint changed since the last
record are re-run. Edges for unchanged projects are preserved from
.titi/test-cache/edges/projects/<package>.edn. Run titi clean to force a
full re-record.
titi test-manifest [--tier <tier>] [--select] [--list]
Generate a Traversal .proj for affected tests.
Flags:
--tier <tier>— Filter by test tier (unit,package,integration,compatibility)--select— Generate per-test filtered Traversal (requires edge cache)--list— Print selected test IDs to stdout (implies--select)--base <ref>— Base git ref to diff against (default:HEAD~1)
Exit codes:
| Code | Meaning |
|---|---|
0 |
Success — selected tests returned |
10 |
Confidence below threshold — consider full-suite run |
20 |
Safe to skip — no affected tests |
Example:
$ titi test-manifest --select --list
Orion.UnitTests.ParserTests.TestParse
Orion.UnitTests.ParserTests.TestParseEmpty
$ echo $?
0
titi testaruda-adapter
Start the testaruda adapter (JSON-over-stdio protocol). Reads commands from stdin, writes responses to stdout. See the Adapter Protocol page for details.
titi repl
Interactive dependency graph REPL. Commands: deps, dependents, path, info,
affected, tree, help, quit/exit.
Example:
$ titi repl
> deps Orion.Core.Data
Orion.Auth
Orion.Storage
> tree Orion.App --depth 2
└── Orion.App (src/Orion.App/Orion.App.csproj)
├── Orion.Core.Data (src/Orion.Core.Data/Orion.Core.Data.csproj)
│ └── Orion.Auth (src/Orion.Auth/Orion.Auth.csproj)
└── Orion.Storage (src/Orion.Storage/Orion.Storage.csproj)
titi clean
Remove all titi-generated artifacts (.titi/ directory).
titi --help
Show usage information.