Cellar
Look up the public API of any JVM dependency from the terminal.
When a coding agent needs to call an unfamiliar library method, its options are bad: parse HTML docs (expensive, unreliable), find source on GitHub (requires knowing the URL), or hallucinate the API.
Cellar gives agents — and humans — a single shell command that returns exactly the type signatures, members, and docs needed to write correct code. Output is plain Markdown on stdout, ready to be injected into an LLM prompt with zero post-processing.
Supported artifacts
| Format | Support |
|---|
| Scala 3 (TASTy) | Full — signatures, flags, companions, sealed hierarchies, givens, extensions, docstrings |
| Scala 2 (pickles) | Best-effort — type information may be incomplete |
| Java (.class) | Good — signatures, members |
Installation
Coursier (recommended)
If you have Coursier installed:
cs install --contrib cellar
This pulls the GraalVM native binary for your platform from the latest GitHub Release. Update with cs update cellar.
Nix
Run without installing:
nix run github:VirtusLab/cellar -- get-external org.typelevel:cats-core_3:2.10.0 cats.Monad
Install into your profile:
nix profile install github:VirtusLab/cellar
A Nix overlay is also available at github:VirtusLab/cellar#overlays.default.
Manual
Download the native binary for your platform from https://github.com/VirtusLab/cellar/releases/latest, then extract and install:
tar xz -f cellar-*.tar.gz
sudo mv cellar /usr/local/bin/
To verify checksums and signatures, see RELEASING.md.
Quick start
# Look up a trait from cats
cellar get-external org.typelevel:cats-core_3:2.10.0 cats.Monad
# Look up a symbol from the current project
cellar get --module core cats.Monad
# List top-level symbols in a package
cellar list-external org.typelevel:cats-core_3:2.10.0 cats
# Search for a method name
cellar search-external org.typelevel:cats-core_3:2.10.0 flatMap
# View source code
cellar get-source org.typelevel:cats-core_3:2.10.0 cats.Monad
# Dependency tree
cellar deps org.typelevel:cats-effect_3:3.5.4
Commands
Cellar has two modes: project-aware commands that work against your current project's classpath, and external commands that query arbitrary Maven coordinates.
Project-aware commands
Run from your project root. Cellar auto-detects the build tool (Mill, sbt, or scala-cli), extracts the classpath, and queries your project's code and all its dependencies.
cellar get [--module <name>] <fqn>
cellar list [--module <name>] <package>
cellar search [--module <name>] <query>
- Mill / sbt:
--module is required (e.g. --module lib, --module core)
- scala-cli:
--module is not supported — omit it
The classpath is cached after the first run. Use --no-cache to force re-extraction.
External commands
Query any published Maven artifact by explicit coordinate:
cellar get-external <coordinate> <fqn>
cellar list-external <coordinate> <package>
cellar search-external <coordinate> <query>
cellar get-source <coordinate> <fqn>
cellar deps <coordinate>
Command reference
| Command | Description |
|---|
get | Symbol info from the current project (signature, flags, members, docs) |
get-external | Symbol info from a Maven coordinate |
get-source | Source code from a published -sources.jar |
list | List public symbols in a package/class from the current project |
list-external | List public symbols from a Maven coordinate |
search | Case-insensitive substring search in the current project |
search-external | Case-insensitive substring search from a Maven coordinate |
deps | Print the transitive dependency list |
Maven coordinates
Coordinates use the format group:artifact:version. The :: shorthand is not supported — use the full artifact name.
org.typelevel:cats-core_3:2.10.0 # Scala 3
org.typelevel:cats-core_2.13:2.10.0 # Scala 2
org.apache.commons:commons-lang3:3.14.0 # Java
Use latest as the version to automatically resolve the most recent release:
cellar get-external org.typelevel:cats-core_3:latest cats.Monad
Options