msnav — cross-service Ruby navigationCross-service go to definition, find references, hover docs, and CodeLens jumps for Ruby microservice workspaces — the navigation a single-repo language server cannot do: from the HTTP call in one service to the route that serves it in another, from a route to the handler it's wired to, from a RabbitMQ publish to its consumer. Works in plain workspaces and in per-service dev containers, where jumps land in the window that owns the target service. The extension is a thin client of the msnav daemon (a Ruby server over a coderag index) and manages it ruby-lsp style: it starts the daemon itself on activation and shows its state in the status bar. Requirements
Ruby ≥ 2.6 for the daemon; VS Code ≥ 1.80 or Cursor. Getting started
No settings are needed in the standard flows: the daemon finds its hub
through the data-dir mount (matching your folder by name, then by file
contents — anonymous mounts like Features
Modes (
|
| Mode | What it does |
|---|---|
auto (default) |
bridge in remote/container windows, provider locally |
provider |
Definition / References / Implementation providers merged into normal F12 results |
bridge |
CodeLens hints + cross-window open routing (dev containers) |
Settings
| Setting | Default | Description |
|---|---|---|
msnav.mode |
auto |
See modes above |
msnav.daemonUrl |
http://127.0.0.1:8787 |
Daemon base URL |
msnav.autoStart |
on |
Ensure a daemon on activation (probe, then run msnav.daemonCommand) |
msnav.daemonCommand |
["msnav", "up"] |
Command that ensures the daemon (cwd = hub root); set an absolute path if msnav isn't on the editor's PATH |
msnav.hubRoot |
"" |
Hub root override when the coderag.yml walk-up can't find it |
msnav.pathMappings |
[] |
Container→host path prefix mappings; usually derived automatically from the daemon's scope |
msnav.hostRoot |
"" |
The hub's HOST path, only needed when the daemon works in a non-host path space (whole-workspace mounts) |
Commands
| Command | Description |
|---|---|
msnav: Start Daemon |
Re-run the autostart probe/spawn (also bound to the status-bar item) |
msnav: open cross-service target |
Used by the CodeLens links |
Troubleshooting
- Status bar
msnav ✗/ exit code 2 — runmsnav doctorin the (container) terminal: it walks the hub-resolution ladder and prints what each step found, with fixes. msnav ⚠— the daemon on the port serves a different hub; use another port or stop it (msnav down).- The msnav output channel logs every autostart attempt, registration, and routed open.
- More (Bundler contexts, git-gem pitfalls, non-root containers): troubleshooting in the repo README.