Free and open source

SnoutCodeThe native IDE for Java, Gradle and Spring.

Written in Rust, with its own Java engine, and TypeScript for Node projects and Playwright tests. Git and Claude Code are built in, and the window can stay on your desk while the project lives on a Linux machine over SSH.

macOS, Linux and Windows. MIT licensed. No account, no price.

Made for
  • Java
  • Gradle
  • Maven
  • Spring Boot
  • TypeScript
  • JavaScript
  • Node
  • Playwright
  • Vitest
  • Jest
  • Git
The language layer

An IDE that knows your build

SnoutCode reads a Gradle or Maven build the way the build sees itself, modules, source sets, dependencies and all, and gives the editor everything that follows from it.

Java, all the way down

Completion, navigation and refactoring from SnoutCode's Java engine, on the classpath your build really has.

  • Completion that adds the import, and go to definition into libraries
  • Find references, rename, quick fixes and organize imports
  • Extract method, variable and constant
  • Call and type hierarchy, parameter hints, problems as you type
Java in the user guide

Gradle and Maven, as they are

Open a folder with one build or many side by side. The Project view shows the modules as the build sees them.

  • Multi-project and composite builds, buildSrc, the Kotlin DSL, version catalogs
  • Maven reactors, parent POMs, BOM imports and profiles, with no Maven install
  • A JDK that suits each build, offered as a download when none is installed
  • Gradle 7.0 to 9.x, Maven 3.6 to 3.9, JDK 17, 21 and 25
Gradle in the user guide

Spring, as Spring sees it

Beans, where each one is injected, and the endpoints of a Spring Boot application, all in one window.

  • Every bean, and a gutter icon at each place it is injected
  • Endpoints by path and method, a click from their handler
  • Active profiles, evaluated by the engine
  • Completion and checks in application.properties and application.yml
Spring in the user guide

Run, test and debug

Run configurations and gutter run icons, tests in a tree with their results, and a debugger that shows values inline.

  • Breakpoints, stepping, variables and watches
  • Evaluate any expression while stopped
  • Rerun the failed tests, from the gutter or the Tests window
  • The same debugger for Java, TypeScript and Playwright specs
Run and debug in the user guide
Playwright for QA

End to end tests, as a project of their own

A repository of Playwright tests opens as its own kind of project and tests the application from the outside, through its URL. It gets TypeScript editing and the Node, packages and browsers it needs, and never starts Java.

Write tests by using the app

Act in the browser and the steps are written into your spec as you go, right where the caret is.

  • Record at Cursor: into the test the caret is in, as a new test, or as a whole spec
  • Pick Locator: each element you click puts its locator at the caret
  • Page addresses written relative to the app, so a test runs against any environment
  • Playwright's UI Mode and Inspector a click away
Writing tests in the user guide

Follow every run, test by test

Run all, a project, a file or the test at the caret, and watch the Tests window fill in as the run goes.

  • Progress, time left, each worker's step, a grid of tests by browser
  • The last ten results of every test and its flaky rate
  • A failure's error at its line, screenshot comparisons with Accept, steps and a trace filmstrip
  • Rerun failed, from the Tests window, the title bar or the gutter
Running tests in the user guide

Debug a test where it stops

Set a breakpoint in a spec, a page object or a helper. The test stops there with its browser showing.

  • Breakpoints in TypeScript or JavaScript
  • The worker's stack, variables and watches in the Debug window
  • Stepping as for Java, with the same keys
  • The debugger is downloaded the first time, nothing to install
Debugging tests in the user guide

Ready to run

A bar installs the packages with npm, pnpm, Yarn or Bun, by the lockfile, and the browsers its Playwright version runs. The output shows in the Build window.

Environments

Your machine, staging, a review app: each environment sets BASE_URL, its variables and a .env file. They stay outside the repository, so each tester has their own.

History

Every run is kept, the latest 200 of each project, with its environment, branch and commit, and the tests that broke since the run before.

Node and TypeScript

TypeScript, on the Node your project asks for

A package.json project opens as a Node project, without Java. Its scripts run and debug the way a Java project's do, and its editing comes from the project's own TypeScript.

Every script, one click away

The scripts in package.json are run configurations, with a run icon beside each one.

  • Workspaces and folders with their own package.json, each package's scripts named by its folder
  • npm, pnpm, Yarn or Bun, by the lockfile
  • Any TypeScript file runs as Current File, through tsx, ts-node or Node's own type stripping
  • Debug follows every Node process a run starts, and attaches to a Node started with --inspect
Node projects in the user guide

Vitest and Jest, live

Unit tests get run icons at each test, it and describe, and their runs fill the Tests window as they go.

  • Each test passed, failed or skipped, its time, and a failure's message at its line
  • Rerun failed, Run this test and Debug this test
  • A switch between the packages that have tests
  • Debug stops in the test and in the code it calls
Vitest and Jest in the user guide

TypeScript editing

Completion with auto imports, hover, go to definition, find references, rename, quick fixes and problems, from the TypeScript your project installs.

The right Node, found

From .nvmrc, .node-version, volta or engines, among the Nodes of nvm, Volta, fnm, asdf, mise and Homebrew. When none fits, it downloads one and checks it.

Beside a Java build

A Spring Boot application with its front end, or with an e2e folder of Playwright tests, gets each language server for its own files.

Coding agents

Watch your agent type

Claude Code, Codex or your own agent runs in a docked console. Each edit is typed in live, with the agent's own caret and colour, and every line it wrote stays marked.

Live, in your editor

Follow the agent from file to file as it works, or keep your own place. Its lines carry its colour in the gutter and in blame.

Reviewed by prompt

Every change the agent made, with the prompt behind it, to review, keep or undo: by prompt, by file or one change at a time.

An editor API, not a token bill

The agent opens files, reads your selection and the problems through an Agent Skill, a UTCP manual and plain HTTP. About 80 tokens a request, where MCP tool definitions take about 800.

Built in

Git, right where you work

Changes, diffs, commits, branches and history, in a Git view of its own. It runs the git you already have, so hooks, credentials and settings behave as they do in a terminal.

From change to push

Stage by file, write the message, commit and push, without leaving the window you were typing in.

  • Unified, side by side and compact diffs of the index and the working tree
  • Branches, tags and a history you can search
  • Pull, fetch and push with your normal credentials
  • Blame in the gutter, the agents' lines included
Git in the user guide
Remote SSH

Your window, their machine

Keep the window on your Mac while the project, Git, the Java engine, builds, runs, terminals and Claude Code are on a Linux machine you reach with ssh.

Work on a server as if it were here

SnoutCode installs its small server on the machine by itself, over the ssh you already use.

  • Your ssh config, keys and agent, nothing new to set up
  • When the link drops, the window reconnects by itself
  • Builds, tests and the debugger run where the code is
Remote SSH in the user guide
And the rest

Everything a working day needs

Open source

Free, open, and yours to change

SnoutCode is MIT licensed, all of it: the app, the editor and the Java engine. There is no account, no price and no paid tier. Read the code, report what breaks, send a pull request.

$ git clone https://github.com/snoutdata/snout-code.git
$ cd snout-code && ./snout.sh
Everywhere you code

macOS, Linux and Windows

Each one carries the Java engine and its own Java runtime, so there is nothing else to install first.

Open your project in SnoutCode

Free for everyone, on every desktop.