The developer's almanac

Built in Vala, from the ground up. The libraries that raise Astrologue, offered to every developer.

Astrologue builds its own foundations, and it builds them in Vala. The collections and the queries, the database layer, the web stack, the cryptography, the packaging — the eleven libraries that power the operating system are the same ones you can take into your own projects: free to run, study, share and improve.

Free software · LGPL-3.0-or-later for the libraries · built with meson, packaged with USM

The working method

One language, one build, one package

Every project in the catalogue keeps the same discipline, so learning one teaches you the next.

I.

All Vala

Every library is written in Vala, from the Enumerable foundation to the HTTP server. Each compiles to C and the GObject ABI and ships its C header and Vala binding, and most add GIR introspection besides — open to other languages, not fenced in.

II.

Proven parts beneath

Where the ground is hard, the stack stands on battle-tested C: GLib, SQLite, libsodium, GnuTLS, GPGME, libssh, llama.cpp. The Vala libraries contribute the object model and the defaults — not fresh cryptography or a new database engine.

III.

One build, one package

Eleven projects, one shape: a meson.build, a MANIFEST.usm declaring what a project provides and needs down to individual files, and usm-scripts that build, test, install and package it the same way everywhere.

The Web-Stack

How the pieces align

The request path of an Astrologue web application, as drawn in Spry's own README: each layer leans on the ones beneath it.

astralis

HTTP request handling

Statum

pages, slots/state, directives, client JS

Spry

users, auth slot, actions, guards

Invercargill-Sql

spry_users / spry_user_permissions schema

Inversion

module + service wiring

A request arrives at astralis, becomes a page and a state slot under Statum, and meets users and permissions through Spry — whose schema lives in Invercargill-Sql and whose wiring is done by Inversion.

Around the stack

Invercargill

the collections and queries underneath every layer above

Locksmith

objects-not-byte-arrays cryptography, wire-compatible with the stack's signed slots

Vallama

local LLM inference for the applications you build on it

USM

the source packaging that carries the stack — and your own projects too

The catalogue

Eleven libraries

Grouped by trade. Each card opens onto its documentation: what the library does, how to build and install it, and worked examples from its own source.

I.

Foundations

the ground the rest is built on

Invercargill

Foundation

The Enumerable library for Vala — LINQ-style querying plus the Vector, Dictionary, Series and buffer data structures the whole stack is written against.

LGPL-3.0-or-later Documentation →

Invercargill-Json

Foundation

JSON support for Invercargill: documents become Enumerable collections that query and transform like any other sequence.

LGPL-3.0-or-later Documentation →

Inversion

Foundation

Inversion of control for the Web-Stack: a dependency-injection container with modules, scopes and three lifecycles, wired by field injection.

LGPL-3.0-or-later Documentation →

II.

Data

rows, schemas and migrations

A generic SQL abstraction built on Invercargill data structures — query results return as lazy Enumerable rows over a provider-neutral API, with SQLite beneath today.

LGPL-3.0-or-later Documentation →

The Inversion integrations for Invercargill-Sql: DatabaseConfigurator, MigrationStartupService and InversionTypeProvider wire the database into the container.

LGPL-3.0-or-later Documentation →

III.

Web stack

from socket to signed state

Astralis

Web stack

The library for writing HTTP backends in Vala: routing, headers, cookies, form data, JSON APIs, server-sent events, and layered web-config.json settings.

LGPL-3.0-or-later Documentation →

Statum

Web stack

Page rendering and state management for web applications: server-rendered pages, signed and encrypted state slots, directives and actions, bound by a small client script.

LGPL-3.0-or-later Documentation →

Spry

Web stack

Reusable authentication and user-management services for Statum — the signed auth slot, guards and subclassable actions — plus the spry CLI that scaffolds, keys and deploys an application.

LGPL-3.0-or-later Documentation →

IV.

Security

keys, seals and signatures

Locksmith

Security

Developer-friendly cryptography in objects, not byte arrays: sodium boxes, X.509, SSH, OpenPGP and WebPush over libsodium, GnuTLS, GPGME and libssh. It implements no cryptography itself.

LGPL-3.0-or-later Documentation →

V.

Intelligence

language models, locally

Vallama

Intelligence

High-level Vala bindings for llama.cpp inference: chat sessions, grammar-constrained tool calling, embeddings and tokenizers — running on your own hardware.

LGPL-3.0-or-later Documentation →

VI.

Packaging

how it all ships

USM

Packaging

The Universal Source Manifest: a project declares what it provides and needs in a MANIFEST.usm, and usm acquires, builds, tests, packages and deploys it.

GPL-3.0-or-later Documentation →