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 tojavac. - Cargo, if you're building Curie from source. Pre-built binaries land on the GitHub releases page.
2. Install
From source (until the first release is cut):
$ git clone https://github.com/example/curie.git $ cd curie $ cargo install --path curie-build $ curie --version curie 0.1.0
3. Create a project
Anywhere on disk, lay out:
hello/
├── Curie.toml
└── src/
└── com.example/
└── Hello.java
Curie.toml describes the build target. The flat-package layout (src/com.example/...) keeps the source tree shallow — the directory name is the package.
[application] name = "hello" version = "0.1.0" mainClass = "com.example.Hello"
package com.example; public class Hello { public static void main(String[] args) { System.out.println("Hello, Curie."); } }
4. 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
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.
[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 seeResolve 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.sha256sidecars with zero network calls.
Next steps
- Dependency resolution & checksums — how Curie talks to Maven Central
- Kotlin support — drop in
.ktfiles, no config - Workspaces — multi-module monorepos with one root
Curie.toml - Incremental builds — how the rebuild gate decides what to do