Skip to main content
tally provides real-time diagnostics in your editor via a built-in Language Server Protocol (LSP) server. Official extensions are available for VS Code and JetBrains IDEs. Any other editor that supports LSP can connect using tally lsp --stdio.

VS Code

Install the official wharflab.tally extension from the Visual Studio Marketplace.

JetBrains

Install the Tally plugin from JetBrains Marketplace (plugin ID 30255-tally).

Generic LSP

Run tally lsp --stdio to connect any LSP-compatible editor.

VS Code

Install the official extension from the Visual Studio Marketplace: Extension ID: wharflab.tally Install from Marketplace The extension provides:
  • Real-time linting diagnostics as you type.
  • Inline violation messages with rule codes and doc links.
  • Squiggles and Problems panel integration.
  • Picks up .tally.toml config files automatically from your workspace.
The extension uses tally lsp --stdio under the hood. If tally is not on your PATH, the extension will use npx -y tally-cli lsp --stdio as a fallback.

JetBrains IDEs

Install the official plugin from JetBrains Marketplace: Plugin ID: 30255-tally Install from JetBrains Marketplace The plugin works in all IntelliJ-based IDEs including IntelliJ IDEA, GoLand, PyCharm, WebStorm, and Rider.

Generic LSP

Any editor that supports the Language Server Protocol can use tally’s built-in LSP server over stdio.

Start the LSP server

If tally is installed globally:
tally lsp --stdio
If you prefer to use the npm package without a global install:
npx -y tally-cli lsp --stdio

Editor configuration examples

The exact configuration depends on your editor’s LSP client. The general pattern is to configure your LSP client to run tally lsp --stdio for Dockerfile files (dockerfile language ID).
-- In your Neovim config (lua)
require('lspconfig').tally.setup({
  cmd = { 'tally', 'lsp', '--stdio' },
  filetypes = { 'dockerfile' },
  root_dir = require('lspconfig.util').root_pattern('.tally.toml', 'tally.toml', '.git'),
})
tally’s LSP server uses cascading config discovery — it finds the nearest .tally.toml relative to each Dockerfile being edited, the same way the CLI does.