Introduction
What is lsproxy?
lsproxy
offers IDE-like code analysis and navigation functionality in a docker container with a REST API.
It supports multiple languages and resolves relationships between code symbols (functions, classes, variables) anywhere in the project - which can be used to help AI assistants navigate a codebase or build custom code RAG systems.
lsproxy
runs Language Servers and ast-grep under the hood, giving you precise search results without the headache of configuring and integrating language-specific tooling.
Key Features
- ๐ฏ Precise Cross-File Code Navigation: Find symbol definitions and references across your entire project.
- ๐ Unified API: Access multiple language servers through a single API.
- ๐ ๏ธ Auto-Configuration: Automatically detect and configure language servers based on your project files.
- ๐ Code Diagnostics: (Coming Soon) Get language-specific lint output from an endpoint.
- ๐ณ Call & Type Hierarchies: (Coming Soon) Query multi-hop code relationships computed by the language servers.
- ๐ Procedural Refactoring: (Coming Soon) Perform symbol operations like
rename
,extract
,auto import
through the API. - ๐งฉ SDKs: Libraries to get started calling
lsproxy
in popular languages.
Getting started
The easiest way to get started is to run our tutorial! Check it out at demo.lsproxy.dev
Itโs also super easy to run lsproxy
on your code! We keep the latest version up to date on Docker Hub, and we have a Python SDK available via pip.
Install the sdk
You can find the source for the SDK here
Run a container or add to compose
Make sure your WORKSPACE_PATH
is an absolute path, otherwise docker will complain.
Configure an existing system
You can also configure an existing system to run lsproxy
. Add the following line in your dockerfile or run it as part of a startup script
Explore your workspace!
Building products with lsproxy
If youโre building AI coding agents or code RAG, or would like to use lsproxy
in a commercial product, please reach out!
Contributing
We appreciate all contributions! You donโt need to be an expert to help out. Please see CONTRIBUTING.md for more details on how to get started.
Questions? Reach out to us on Discord.
Community
Weโre building a community. Come hang out with us!
- ๐ Star us on GitHub
- ๐ฌ Chat with us on Discord
- โ๏ธ Start a GitHub Discussion
- ๐ฆ Follow us on Twitter
- ๐ด๏ธ Follow us on LinkedIn
Supported languages
Weโre looking to add new language support or better language servers so let us know what you need!
Language | Server | URL |
---|---|---|
C/C++ | clangd | https://clangd.llvm.org/ |
Golang | gopls | https://github.com/golang/tools/tree/master/gopls |
Java | jdtls | https://github.com/eclipse-jdtls/eclipse.jdt.ls |
Javascript | typescript-language-server | https://github.com/typescript-language-server/typescript-language-server |
PHP | phpactor | https://github.com/phpactor/phpactor |
Python | jedi-language-server | https://github.com/pappasam/jedi-language-server |
Rust | rust-analyzer | https://github.com/rust-lang/rust-analyzer |
Typescript | typescript-language-server | https://github.com/typescript-language-server/typescript-language-server |
Your Favorite Language | Awesome Language Server | https://github.com/agentic-labs/lsproxy/issues/new |