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.
For more info, please refer to our API Reference.
rename, extract, auto import through the API.lsproxy in popular languages.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.
pip install lsproxy-sdk
You can find the source for the SDK here
:warning: Version 0.2.0 and newer: JWT authentication is enabled by default for endpoints. So you MUST provide a secret or turn it off as described below
docker run -p 4444:4444 -v $WORKSPACE_PATH:/mnt/workspace -e JWT_SECRET=shared_secret agenticlabs/lsproxy
services:
lsproxy:
image: agenticlabs/lsproxy
ports:
- "4444:4444"
environment:
- JWT_SECRET=shared_secret
volumes:
- ${WORKSPACE_PATH}:/mnt/workspace
docker run -p 4444:4444 -v $WORKSPACE_PATH:/mnt/workspace -e USE_AUTH=false agenticlabs/lsproxy
services:
lsproxy:
image: agenticlabs/lsproxy
ports:
- "4444:4444"
environment:
- USE_AUTH=false
volumes:
- ${WORKSPACE_PATH}:/mnt/workspace
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
curl -sSL https://github.com/agentic-labs/lsproxy/releases/latest/download/install-lsproxy.sh | sh
from lsproxy import Lsproxy
client = Lsproxy()
file_path = "relative/path/from/project/root.cpp"
symbols = client.definitions_in_file(file_path)
for symbol in symbols:
print(f"{symbol.name} is defined in {file_path}")
If you're building AI coding agents or code RAG, or would like to use lsproxy in a commercial product, please reach out!
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.
We're building a community. Come hang out with us!
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 |
$ claude mcp add lsproxy \
-- python -m otcore.mcp_server <graph>