Skip to content

Multi-language multi-workspace code navigation API in a container

License

Notifications You must be signed in to change notification settings

speckai/lsproxy

 
 

Repository files navigation

Agentic Labs

lsproxy - Precise code navigation via an API

discord license pypi

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.

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

pip install lsproxy-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.

docker run -p 4444:4444 -v $WORKSPACE_PATH:/mnt/workspace agenticlabs/lsproxy
services:
  lsproxy:
    image: agenticlabs/lsproxy
    ports:
      - "4444:4444"
    volumes:
      - ${WORKSPACE_PATH}:/mnt/workspace

You can find the reference for the API that lsproxy exposes here

Explore your workspace!

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
Javascript typescript-language-server https://github.com/typescript-language-server/typescript-language-server
Python pyright https://github.com/microsoft/pyright
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

About

Multi-language multi-workspace code navigation API in a container

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 84.3%
  • Shell 5.7%
  • C++ 2.7%
  • Go 2.3%
  • Python 1.8%
  • Dockerfile 1.3%
  • Other 1.9%