For agents (and humans)

Installing Kinogaki

Point your coding agent at agent.kinogaki.com and it can install the Kinogaki libraries straight from this page: what libraries exist, the CDN downloads, checksums, and exact compiler flags. Universal static libraries that link straight into your app.

For agents (and humans)

This page explains, in full, how to install the Kinogaki libraries. It is plain and self-contained on purpose: point your coding agent (Claude Code, Codex, anything) at https://agent.kinogaki.com and it can read everything it needs here, namely what libraries exist, where to download them, how to verify them, and the exact compiler flags. Reading this page is the whole install. The static archives drop straight into your build.

Deeper per-library documentation lives at /docs/kinogaki-core, /docs/kinogaki-ui, /docs/kinogaki-platform (and the other components).

What you're installing

Each library is shipped as a universal macOS static library (arm64 + x86_64) plus its headers, in one .tar.gz. A static library is a compiler input: it links into your binary and ships inside it, so macOS Gatekeeper and notarization apply to your finished app rather than to these archives. You sign your own app; the archives go in raw.

Artifacts are served from the CDN at https://cdn.kinogaki.com/kinogaki-<lib>/<version>/kinogaki-<lib>-<version>-macos.tar.gz; each archive unpacks to kinogaki-<lib>/include/ (the kinogaki/ headers) and kinogaki-<lib>/lib/libkinogaki-<lib>.a (the universal static library). The current version is 0.1.0.

The libraries

Install only what you need; the dependencies above tell you what to add alongside (and in what link order: dependencies come after their dependents on the link line).

Install Kinogaki Core

curl -fsSLO https://cdn.kinogaki.com/kinogaki-core/0.1.0/kinogaki-core-0.1.0-macos.tar.gz
echo "b3ca00d397fc1fca162f7970b0daa7867bde6058d5eb9695789e13baf78eab35  kinogaki-core-0.1.0-macos.tar.gz" | shasum -a 256 -c -
tar -xzf kinogaki-core-0.1.0-macos.tar.gz   # → kinogaki-core/include + kinogaki-core/lib

Compile against it:

c++ -std=c++20 -Ikinogaki-core/include your_app.cpp -Lkinogaki-core/lib -lkinogaki-core -o your_app

That is the whole pattern. The codecs are part of this library: #include "kinogaki/Codecs.h", call doc.load("notes.md"), and link the one archive you already have.

Install Kinogaki UI (with its dependencies)

UI pulls in platform and core, plus FreeType and the system frameworks:

for lib in kinogaki-core kinogaki-platform kinogaki-ui; do
  curl -fsSLO https://cdn.kinogaki.com/$lib/0.1.0/$lib-0.1.0-macos.tar.gz
  tar -xzf $lib-0.1.0-macos.tar.gz
done
FT=$(brew --prefix freetype)
c++ -std=c++20 \
    -Ikinogaki-core/include -Ikinogaki-platform/include -Ikinogaki-ui/include -I$FT/include/freetype2 \
    your_app.cpp \
    -Lkinogaki-core/lib -Lkinogaki-platform/lib -Lkinogaki-ui/lib -L$FT/lib \
    -lkinogaki-ui -lkinogaki-platform -lkinogaki-core -lfreetype \
    -framework AppKit -framework Metal -framework QuartzCore -framework Foundation -framework UniformTypeIdentifiers \
    -o your_app

Checksums for verification: platform 15878ec54a373353d3d0e7f86ce5b7bcb14de88a7927ec196a20c5d96a55432d, ui c42de17ae4b993d01968f09e7300f41f3c663579ff7d4bf2d963dfe05eac18f5.

Verify and use

Everything lives under the kinogaki:: namespace and the kinogaki/ include root. A one-file check:

#include "kinogaki/Document.h"
#include <cstdio>
using namespace kinogaki;
int main() {
    Document doc;
    doc.append(Path("/hi"), "note").set("msg", Str("it works"));
    std::printf("%s", doc.toString().c_str());
}

Build from source instead

Every library also builds from its source checkout with one script (./build.sh, plain compiler toolchain), handy on other platforms or to track main. For macOS, reach for the static archives above; they are self-contained.

Detailed documentation

Or start at the kinogaki overview.