The Dragon SDK is the Mica compiler’s backend, published as a deliverable: one C header and one static archive, behind which sit control-flow analysis, an SSA middle-end, storage placement, register allocation, and native emission for x86-64 and ARM64. A compiler front end written in any language hands it an intermediate-code unit and gets optimized native code back — the same engine that compiles Mica, not a reduced version of it. The announcement tells the whole story, and Build a compiler with Mica is the guided course built on it. This page is the practical part: the licence, the download, and the check that it works.

The SDK is an add-on to the compiler, not a replacement for it — and it needs the compiler even if your frontend is written in C and never runs mica: the programs your frontend produces are linked against the Mica standard-library archive, which the compiler package installs — the runtime the emitted code starts in and calls. That is why the SDK package depends on mica and pins the exact version it was built with, so apt keeps the pair consistent. Install the compiler first.

The licence, before the download

The compiler and the SDK ship under different licences, and this is the one place in the Mica ecosystem where that matters. Mica itself is free for every purpose, commercial work included — that does not change. The Dragon SDK is licensed under the PolyForm Noncommercial License 1.0.0:

Mica compilerDragon SDK
Packagemicamica-dragon-sdk
Licencefree for every purpose, commercial work includedPolyForm Noncommercial 1.0.0
Free foranythingresearch, teaching, personal study, hobby projects; educational, charitable, public-research and government institutions
Commercial useincludedseparate written agreementinfo@mica-dev.com

Anyone may try it. Install it, read the header, write a front end, run the course — for study or your own interest, that is inside the free grant. If it is work for a company, including internal work toward a commercial product, write to us first and we will sort it out with you. The full licence text installs at /usr/share/doc/mica-dragon-sdk/copyright.

Zero-install: the container

The container image deliberately does not carry the SDK — taking a licence should be a decision, not something that happens to you. One command inside the image prints the terms, waits for your answer, and then installs the two files:

mica-install-sdk

Everything below is the native installation.

Download

The licence is not the compiler's. Mica itself is free for every purpose, commercial work included. The Dragon SDK is licensed under the PolyForm Noncommercial License 1.0.0: free for research, teaching, personal study, hobby projects, and for educational, charitable, public research and government institutions — and any commercial use requires a separate written agreement. Write to info@mica-dev.com before you begin, and we will sort it out with you. Downloading it means accepting those terms.

arm64
Download SDK 6.12.8
File
mica-dragon-sdk_6.12.8_arm64.deb
Size
1.6 MB
Built
2026-08-05
SHA-2563b1995056e448de8edc4f51893be1c7b2e463afd8ba3bb99668e601f089c9c1a
amd64
Download SDK 6.12.8
File
mica-dragon-sdk_6.12.8_amd64.deb
Size
1.9 MB
Built
2026-08-05
SHA-256e5d1a385ce9ebd5c743b97e3b7c27b227112ea2226c87e170a4db43142175861

Version 6.12.8, built from commit 6aaa3230. Verify a download with sha256sum against the hash above.

Install

# from the directory holding the .deb, with the mica package already installed
sudo apt install ./mica-dragon-sdk_<version>_<arch>.deb

The package depends on mica at the same version, so apt refuses a mismatch instead of letting an archive meet a compiler that believes something else. When you upgrade the compiler, upgrade the SDK in the same command.

Check it worked

The smallest honest check is a C program that opens a Dragon session and closes it again. Save this as probe.c:

#include <mica_dragon.h>
#include <stdio.h>

int main(void) {
    drg_ctx session;
    if (dragon_context_new(&session) != 0) return 1;
    dragon_context_free(session);
    puts("dragon: ready");
    return 0;
}

and build it against the archive — <arch> is amd64 or arm64, matching your machine:

gcc -std=c23 probe.c /usr/lib/libmicadragon-<arch>.a -lpthread -o probe
./probe

You should see dragon: ready. From here, the course’s chapter 2 builds and runs a complete compiler against the same two files.

From Mica the engine is reached by import instead — imp ContextNew, UnitNew : dragon; — and no header is involved: the dragon surface is embedded in the compiler, so a Mica front end compiles and type-checks without the SDK installed. Only the link asks for the archive, and names the missing file if it is not there. What that surface contains is the installed dragon-engine.json — the Mica-side counterpart of reading the header.

What gets installed

Path
/usr/lib/libmicadragon-<arch>.athe backend engine as a static archive
/usr/include/mica_dragon.hthe whole consumer surface, one header
/usr/share/doc/mica-dragon-sdk/dragon-engine.jsonthe curated dragon import surface, as a file you can read — held byte-identical to what the compiler embeds
/usr/share/doc/mica-dragon-sdk/copyrightthe licence text

Nothing else — no shared libraries, no daemon, no configuration. Removing the package removes the SDK completely.

See also