Tools

Free tools for Java teams, built for problems we meet in projects. Code, documentation and issues live on GitHub; setup, rules for your code base and training come from us.

New: Dukehoff MCP for Java 0.9.1 →

apache 2.0 · open source

Dukehoff MCP for Java

The Java IDE for coding agents.

Coding agents edit Java like text: search, open, edit, repeat. Dukehoff MCP gives them what an IDE gives you, as tools they call over MCP. It runs locally, needs no open IDE, and keeps its index warm between sessions.

For Claude Code, GitHub Copilot (VS Code and CLI), Codex, Cursor and omp. Maven, Gradle and Ant. Windows, macOS, Linux; JDK 17 or newer.

Debug
Run a test under the debugger, stop at a method, line or exception, and read the stack and variables, instead of guessing from print statements.
Migrate
Type-safe, rule-based search and replace across the whole code base (Jackpot rules), with a dry run first. Matches types, not text.
Refactor
Rename, move, change signature, safe delete and inline, for every caller and override, returned as one diff.
Navigate
Usages, implementations, symbols and outlines: semantic answers, not text matches that include comments and same-named methods.
Check
Compile errors of the whole workspace, without running a build.

Measured on a code base of about 8,900 Java files, three sessions each with and without Dukehoff MCP (Claude Sonnet 5, October 2026, credits at GitHub Copilot's rates).

taskturns withoutturns withcredits withoutcredits with
Rename a public method and its 24 calls, leaving same-named methods of other classes alone47.74.754.37.2
Find the 32 subclasses of a class, 5 of them indirect9.05.317.89.1

The gain is largest in refactorings and cross-file questions, where text search needs many steps or gets it wrong.

New: dukehoff-decide 0.1.0 on Maven Central →

apache 2.0 · open source

dukehoff-decide

Type-safe decisions from small language models.

Many LLM calls ask a question whose answer is one of a few options: which team handles this ticket, is this spam, how urgent is it. dukehoff-decide turns the question into a Java type and answers it with a small local model. You get a typed value, probabilities you can rely on, and a gate that sends uncertain cases to a human.

Java 21. Any OpenAI-compatible server with log-probabilities, such as Ollama or llama.cpp. Spring Boot starter included. On Maven Central as com.dukehoff.decide.

@Question("Triage an incoming support ticket")
record Triage(Priority priority, Team team,
              boolean churnRisk) {}

Decision<Triage> d = triage.decide(State.of(text));
d.value();                  // always a valid Triage
d.distribution("priority"); // Map<Priority, Double>
Calibrate
A few hundred labelled examples fit the model's confidence to reality, with a report of accuracy and errors per field.
Gate
Decide automatically above a threshold, hand the rest to a person.

Customer messages, 11 categories, 1.5B model: 93.7% accuracy after calibration; at a 0.9 threshold 71% are decided automatically, 99.5% of those correctly.

Using our tools in your project?

We help with setup, write rules for your code base, train your team, and extend the tools where you need it.

Get in touch