skip to content
[readonly]

sexc

A package manager and build system for C, written in C.

Every package has a sexc.json. A workspace holds many of them, and they depend on each other with "workspace:*", the way npm and pnpm do. sexc works out the order, compiles everything in parallel, rebuilds only what a change touched, links, and runs your tests. A registry where anyone can sign up, publish and install is at packages/.

status

Early. The build system works, and it builds this website. The registry is open: sign up, publish, install. Everything here is C, this site, its design system and the registry server included: no JavaScript, no Makefiles, no shell scripts.

Quickstart

You need a C compiler and nothing else. In a checkout:

sh
$ cc -o bootstrap bootstrap.c && ./bootstrap
$ ./sexc build
$ ./sexc test
$ ./sexc run sexc-web -- serve

bootstrap compiles a first sexc in one compiler call, has it build the real one, and links that to ./sexc. From then on sexc builds itself.

A package

sexc.json
{
  "name": "@sexc/http",
  "version": "0.1.0",
  "description": "A small HTTP/1.1 server",
  "kind": "library",
  "dependencies": { "@sexc/core": "workspace:*" }
}

Sources default to src/*.c, public headers to include/, tests to tests/*.c. See manifest.txt for every field.

Why

  • One language, top to bottom. The tool, the MCP server, the registry, this website and its design system are all C.
  • Strict dependencies. A package sees the headers of the packages it declares and nothing else, like pnpm's strict node_modules.
  • Fast. Parallel, incremental builds that follow every header a file includes.
  • Made for agents. llms.txt, an MCP server, --json on every command, and sexc help --json describing them all.
  • Plain text all the way down. These pages are text files with links in them. curl sexc.dev/docs/cli.txt gets you the text without any markup.

Files

  • total 4
  • drwxr-xr-x856Oct 26 12:00docs/# how to use sexc
  • drwxr-xr-x-Oct 27 12:00packages/# everything published
  • drwxr-xr-x3.0KOct 27 12:00registry/# sign up, install and publish packages
  • -rw-r--r--0Oct 26 12:00llms.txt# sexc, for language models

Keys: alt+shift (or ctrl+option on a Mac) with h for this README, d docs, p packages, r registry, l llms.txt, u your account.