Skip to content

Quickstart

This guide takes you from zero to a running native binary in under 5 minutes.

Terminal window
duumbi init calculator
cd calculator

This creates a .duumbi/ workspace with:

  • graph/main.jsonld — your program’s entry point
  • config.toml — project configuration
  • schema/core.schema.json — graph validation schema
  • stdlib/ — standard library modules (math, io)

The generated main.jsonld contains a simple program that adds 3 + 5:

{
"@context": "https://duumbi.dev/ns/core#",
"@type": "duumbi:Program",
"duumbi:functions": [
{
"@type": "duumbi:Function",
"@id": "duumbi:main/main",
"duumbi:name": "main",
"duumbi:returnType": "i64",
"duumbi:blocks": [
{
"@type": "duumbi:Block",
"@id": "duumbi:main/main/entry",
"duumbi:label": "entry",
"duumbi:ops": [
{ "@type": "duumbi:Const", "duumbi:value": 3, "duumbi:valueType": "i64" },
{ "@type": "duumbi:Const", "duumbi:value": 5, "duumbi:valueType": "i64" },
{ "@type": "duumbi:Add" },
{ "@type": "duumbi:Print" },
{ "@type": "duumbi:Return" }
]
}
]
}
]
}
Terminal window
duumbi build
./output

Output:

8

The program compiled the graph to native code via Cranelift and printed the result of 3 + 5.

Validate the graph without building:

Terminal window
duumbi check

See a human-readable description of your program:

Terminal window
duumbi describe
Program: main
Function: main() -> i64
Block: entry
0: Const(3)
1: Const(5)
2: Add
3: Print
4: Return

Start the interactive mode:

Terminal window
duumbi

The REPL supports all commands plus slash-commands:

duumbi> /build
✓ Build successful
duumbi> /describe
Function: main() -> i64 ...
duumbi> /add "add a subtract function"
✓ AI generated sub(a: i64, b: i64) -> i64