Skip to main content
CLI Reference

travsr status

Print index and graph status for the repository you are standing in.

It is a single-repo command: it resolves the git root from the working directory and reports on that repository's .travsr/graph.db. For a view across every registered repo, use travsr repos.

Synopsis

travsr status

There are no flags. If the repository has not been initialised, it exits with not initialized; run \travsr init``.

Where the answer comes from

If the daemon is running, status asks it and gets an answer from the warm store. If not, it opens the graph read-only and reads the same figures directly. The output is identical either way, so the command is safe to run whether or not the daemon is up.

Example output

$ travsr status
nodes: 18432 | edges: 94751 | schema: v21 | last_commit: a1b2c3d | semantic: complete | rerank: ready

One line on stdout:

FieldMeaning
nodesNode count in the graph
edgesEdge count in the graph
schemaSchema version the database is migrated to
last_commitCommit the index was last built against, or (none)
semanticPhase B state: complete, pending, not run, partial (...), or crashed: <lang>
rerankReranker state. Omitted entirely when the daemon does not report one

semantic is downgraded from complete when a language that is enabled for the repo did not actually produce edges, so a language that crashed or was never consented to is never hidden behind a flat "complete".

Warnings

Anything that needs attention goes to stderr, so piping stdout stays clean. You may see:

  • HEAD does not match the index. Your checkout is at a different revision than the one the graph was built from, which happens in a linked worktree or after a HEAD move the daemon has not yet caught up with.
  • Built with an older version of travsr. The signature format changed since this graph was built; run travsr init to rebuild it.
  • Search index skew. The full-text index and the node table disagree, which points at a partial write.
  • Per-language Phase B problems. A language that crashed, one still waiting on consent or approval, one with no analyzer installed, or one missing a compilation database. Each names the language and, where there is one, the prerequisite or the command that fixes it.

Sidecar health

Travsr spawns external, independently versioned binaries: the embed sidecar and the Phase B language tools. travsr status ends with a sidecars: block reporting the version of each one actually installed, so a binary that has drifted behind the host is visible before it produces a confusing failure rather than after.

sidecars:
travsr-embed 1.3.0 ok
scip-clang 0.4.0 ok

The line says one of five things:

LineMeaning
1.3.0 okAt or above the version Travsr requires
1.3.0 ok (newer 1.4.0 available)Usable, and a newer release exists
1.0.0 below required 1.2.0 - run: …Too old to behave correctly; refused, with the fix named
unknown cannot confirm >= 1.2.0 - run: …Version unreadable while a floor is declared, so compliance cannot be proven
unknown version probe timed out …The probe exceeded its deadline; treated as usable, but unconfirmed

The floor is a hard, offline gate: a below-floor sidecar is refused at spawn with an actionable message instead of failing somewhere deeper. The "newer available" note is advisory only, comes from a local cache, and never triggers a network call from status.

Tools that declare no floor and simply do not answer --version are omitted rather than listed as unknown, so the block stays worth reading.

The same block appears in travsr embed status and travsr lang list.

See also

  • The get_index_status MCP tool, which returns the same picture as JSON for agents
  • travsr fsck for graph integrity rather than freshness