Get started · 5 min

Your first build with Curie.

Install the binary, drop in a Curie.toml, and run curie build. That's the whole onboarding.

1. Prerequisites

  • JDK 21 or newer on PATH — Curie shells out to javac.
  • Cargo (from rustup) — Curie installs via cargo install below.

2. Install

Curie is published on crates.io, so the install is one Cargo invocation. Cargo pulls the sources, builds a release binary, and drops it on your PATH:

shell
$ cargo install curie-build
$ curie --version
curie 0.7.0

For upgrading, building from source, and shell completions see Installation.

3. Create a project

Shortcut: curie new — scaffold a project in one command. Curie generates the directory, Curie.toml, and a starter source file for you:

$ curie new app hello
Created hello/Curie.toml
Created hello/src/com.example/Hello.java

Run `curie build` inside hello/ to compile and package.

4. Build

$ curie build
Building hello v0.1.0
  Compile         1 source file(s)  [no class files]
  Tests           no test sources found
  Package         hello-0.1.0.jar
  Done            target/hello-0.1.0.jar

A second run with no edits short-circuits — every step prints up to date and exits in milliseconds.

5. Run it

$ curie run --no-docker
  Compile         up to date
  Package         up to date
Hello, Curie.

Or run the JAR directly: java -jar target/hello-0.1.0.jar.

6. Add a dependency

Open Curie.toml and add a [dependencies] table. Curie resolves from Maven Central, verifies the SHA-256 sidecar, and caches under ~/.m2/repository — the same layout Maven uses.

Curie.toml
[application]
name      = "hello"
version   = "0.1.0"
mainClass = "com.example.Hello"

[dependencies]
"com.fasterxml.jackson.core:jackson-databind" = "2.17.2"
On the next build you'll see Resolve deps  3 JAR(s) as Jackson and its transitive closure are fetched in parallel, checksum-verified, and put on the classpath. Subsequent builds verify the cached files against their .sha256 sidecars with zero network calls.

Next steps