Installation
There is no published binary or package yet — Syne is an early prototype, so you build it from source.
Requirements
- A JDK. Gradle provisions a Java 21 toolchain automatically if your host JDK is a different version, so any recent JDK is enough to start the build.
- Git, and a repository to index. Syne reads from the git object database, so the target must be a real repository, not a loose folder of files.
Build
git clone https://github.com/rajasekharb/syne-compiler.git
cd syne-compiler
./gradlew build # compile, run tests, and apply the format and lint gates
./gradlew :app:installDist # produces app/build/install/syne/bin/syneThat leaves a launcher script at app/build/install/syne/bin/syne. Put it on your PATH, or call it by its full path. A merged fat jar is also available:
./gradlew :app:shadowJar
java -jar app/build/libs/syne-*-all.jar index . -b main --statsNote that ./gradlew clean deletes app/build/install, so re-run :app:installDist after a clean build.
Index a repository
syne index /path/to/your/repo -b main --stats--stats prints node and edge counts plus a breakdown of how call edges were resolved, which is the quickest way to see whether the index is healthy.
By default everything is written under .syne/ inside the target repository: the graph database, a JSON export of it, and any derived artifacts. Add --emit slice,orientation,skills to also write the human- and agent-readable artifacts. Add --rebuild to wipe an existing graph and start over.
Java source is parsed with no classpath by default. If you want calls into your dependencies resolved as well, point Syne at the jars — --jars <path> or --classpath-file <path>. It never runs Maven or Gradle and never touches the network to find them itself.
Query it
syne blueprint com.example.billing
syne blast-radius table:PAYMENTS
syne query "MATCH (t:Type) RETURN t.name LIMIT 20"The store opens read-only for every query command, so a query cannot damage the graph.
Connect it to an agent
syne wire /path/to/your/repo --mcpThis bootstraps the graph if it is missing, writes a pointer block into the repository's AGENTS.md or CLAUDE.md, projects a repository skill into .claude/skills/, and registers a syne server entry in .mcp.json. Your agent then talks to syne mcp, which serves the graph over stdio, read-only.
Remove it
syne clean /path/to/your/repo db --dry-run # or: logs | all--dry-run lists what would be deleted without touching anything.