What's New
Recent additions to Travsr. For the longer-term plan, see the Roadmap.
travsr ask answers questions about Travsr, and elevated languages stop asking permission
travsr askhandles questions the graph cannot answer. "What is this repo written in?" used to match "repo" against symbol names and return a screen of hits that looked like an answer. Questions about Travsr itself, or about the repository as a whole, are now recognised before retrieval and answered in place; a repository-composition question runslang listand an index question runsstatus. It is strict in one direction on purpose: anything the catalogue cannot fully account for still goes to retrieval, because a confident wrong answer to a code search is worse than a missed meta question. Seetravsr ask.travsr ask --examplesand--cmds. The first lists the question shapes Travsr can answer, filled in with the most depended-upon real symbols from your own index, so every line runs as printed. The second prints the whole command surface, subcommands included, grouped by what each is for. Both are checked against the CLI definition at test time, so neither can advertise a command that does not exist.- Elevated languages no longer ask for approval. Java, Kotlin, Scala, and C# required a per-user approval, an approver handle, a justification, and a host allowlist, before they could be installed. That gate is gone for local use and
travsr lang approveis removed with it. The runtime isolation policy is byte-for-byte what it was; only the human approval moment went away. See Installation. travsr connectwrites MCP wiring only; the rules file is opt-in. The always-on rules block is re-read on every turn of every conversation, and it had grown to roughly 567 tokens per turn, competing with your own rules for attention. Most of it named which tool answers which kind of question, which the MCP client already sends:tools/listhands the model all 26 tool names and descriptions before the conversation starts. What remains ships behindtravsr connect --rules. Seetravsr connect.travsr lang listshows what you can act on. The PACKAGE column (npm names that no longer install anything) and the SANDBOX column (an internal tier) are replaced by a THIS REPO column that mirrors the per-repo gate exactly, so a language can no longer read "active" while full analysis is off for the repo in front of you. Installing a language inside a repo is itself the consent signal for that repo. Seetravsr lang.- Consent-gated unsandboxed analysis on Windows. Java (Gradle) and Scala (sbt) fork workers that cannot run inside the Windows isolation layer.
travsr lang allow-unsandboxed <language>records a one-time, per-language, machine-local permission to run them with your own privileges instead; without it they are skipped honestly rather than producing a silent zero-node run. The child starts from a cleared environment, soGITHUB_TOKEN,AWS_*,SSH_*, andNPM_TOKENnever reach the build tool. - Live per-language progress during cross-file analysis.
travsr initused to printFinalizingand then block with nothing on screen, so a JVM cold start looked like a hang. Each language now reports as it starts and finishes, with the timeout quoted only when something currently running is actually bounded. - Struct and class fields are addressable. Fields are now graph nodes in twelve languages, and a field read surfaces in
find_referencesas a realpath:linesite on its ownref/fieldedge kind, so field use sites are visible without polluting the call graph thatget_callersandget_blast_radiustraverse. travsr embed reindex --rebuild. Re-embeds the whole index from scratch, for use after switching models when older vectors may be inconsistent with newer ones.
Observability tools and a sidecar version contract
- Three read-only observability MCP tools. The MCP surface could answer questions about your code but not about the index those answers came from, so an agent could not tell "there are no callers" from "the graph cannot see them yet".
get_index_statusreports freshness, counts, per-language Phase B state and semantic readiness;get_daemon_logsreturns recent daemon entries, severity-filtered and redacted;get_graph_healthreports ghost paths, orphan edges and lexical parity without ever mutating anything. - Sidecar version floors. Travsr spawns external binaries that version independently, and install correctness used to be judged by file presence alone, which never flips false when a better release ships. A cached sidecar three releases behind ran anyway and failed with a cryptic downstream error. There is now a hard, offline compatibility floor: a below-floor sidecar is refused at spawn with the reinstall command named, and
travsr status,travsr embed statusandtravsr lang listall end with asidecars:block showing what is installed. See Sidecar health. - Exact search mode for
search_symbol. Narrow a noisy name to its exact matches instead of wading through fuzzy ones.
16-language coverage and get_snippets
get_snippetsMCP tool. Kind-aware code retrieval that returns the source of matched symbols directly, so an agent can read implementations without a second round trip. This brings the core MCP query surface to 12 tools (21 in single-repo stdio, counting thesynonym_*andrepos_*management tools).- Swift, Objective-C, and Dart. Phase B semantic indexers shipped for Swift (
travsr-swift-index-emitter), Objective-C (travsr-lang-objectivec, macOS only), and Dart (travsr-dart-index-emitter), bringing structural coverage to 16 languages. - Phase B plugin host. Every non-built-in language now runs through a sandboxed plugin host with a two-transport architecture (in-process native or external sidecar) and a per-language trust model. Install any of them with
travsr lang install <lang>.
Dynamic synonyms and new sidebar panels
travsr synonymCLI. Add, remove, and list query-time synonym pairs from the terminal. Synonyms expand search terms at query time, searchingbillingalso hits nodes taggedpaymentandinvoice. Seetravsr synonym.- Synonyms panel. Manage synonym pairs visually in VS Code without touching the CLI. See Synonyms Panel.
- Languages panel. Shows which languages are indexed in the current repo and lets you install language tools with one click. See Languages Panel.
- Repos panel. Lists all repos in the Travsr registry with live active/stale badges and a one-click prune button. See Repos Panel.
- Graph Stats panel. Shows node count, edge count, schema version, DB size, and last-indexed time at a glance. See Graph Stats.
Visual graph panel and get_graph_json
- Visual graph panel. Open the Cytoscape.js graph panel from the command palette with
Travsr: Show Graph(Cmd+Shift+G). It renders the live code graph for a symbol and lets you click through dependencies and callers. See VS Code features. get_graph_jsonMCP tool. Returns a subgraph as raw node and edge JSON rather than token-budget-trimmed prose. It backs the graph panel and is useful for custom integrations and CI tooling. See the tool reference.
Language packages
Semantic analysis is now installable per language via travsr lang install <lang>. It adds call edges, type resolution, and cross-module references on top of the always-on Tree-sitter structural parsing.
- Rust, TypeScript, JavaScript, and Python are built into the core binary and run automatically.
- More languages ship as separate packages: Go, Ruby, PHP, C++, C, Java, Kotlin, C#, and Scala.
See Installation for the install steps and trust model, and travsr lang for the CLI reference.