Skip to content

[FEATURE]: Built-in flag-gated Ruff LSP server (parity with the existing ty LSP) #38226

Closed as not planned

Description

@natori-hrj

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

Follow-up to #5345, which was auto-closed for inactivity (the bot suggested opening a fresh one).

opencode already ships ty as a built-in Python LSP behind an experimental flag (experimentalLspTy in packages/opencode/src/lsp/server.ts), but there is no built-in ruff server counterpart — Ruff is wired up only as a formatter. Astral's own guidance is to run ty + ruff together (ty for types, ruff for lint + quick-fixes / import fixing), so the built-in Python LSP support is currently half-complete.

Proposal: add a flag-gated ruff LSP that mirrors the existing Ty server exactly and runs alongside pyright/ty rather than replacing them (same way eslint runs next to typescript):

  • new Ruff entry in lsp/server.ts, extensions .py/.pyi, launched via ruff server
  • gated by an experimental flag, symmetric with ty
  • detect ruff on PATH or in .venv/venv, no auto-install (per the earlier maintainer note in [FEATURE]: ty + ruff lsp rather than pyright #5345)

I know this is achievable today via custom lsp config, and there were prior stale PRs (#9126, #14850). Filing this mainly to confirm whether a first-class, ty-symmetric built-in is wanted before I open a PR — happy to implement it if so.

Activity

  1. github-actions commented on Sep 22, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions