Tools we built,
then gave away.

We write a lot of internal tooling. When something turns out to be useful past our own work, it goes on GitHub and npm. No signup, no upsell. Each one has its own site. This page is the shelf.

// Practice & standards

How we work with agents, and how we write. Extracted from real jobs, then published so the next session starts where the last one stopped.

ForgeKit

v0.3.0

A playbook that makes AI coding agents plan before they build.

Most AI coding sessions forget everything the moment you close the tab. ForgeKit keeps the phase you are in, the decisions you made, and the gotchas you hit inside the repo itself, so the next session picks up where the last one stopped.

Seven phases, entry and exit criteria for each, and a library of lessons pulled from shipping real products. Works with Cursor, Claude Code, Windsurf, and anything else that speaks MCP.

Ships as
Markdown methodology, a CLI, and an MCP server with 29 tools
Built with
Node.js, TypeScript
License
Apache 2.0
Status
Active, pre-1.0

aiBreze

v0.1.1

Editorial rules for prose that says something, instead of just sounding like it.

Unearned language is the problem, not the dictionary. aiBreze is a composable rule set you point an agent at: core law, genre extras, a project overlay, then a smell audit and a claims pass. It does not detect who wrote the sentence. It does not care. Bad prose is bad prose.

Not a humanizer. It will not fool an AI detector and it does not try. Spray the prose, not the author. This site and the launch copy run on it.

Ships as
npm package `aibreze` (Markdown rules plus a small JS entry)
Built with
Markdown, TypeScript
License
MIT
Status
Active, early
// Nutrition labels

One small validatable file per layer of the AI stack. Objective facts only. When a number is withheld, the file says undisclosed, because that is a fact too.

AppFacts

v0.1

A nutrition label for software.

Package manifests list everything and therefore tell you nothing. README tech-stack sections go stale the week after you write them. AppFacts is one small file that says what a project is actually built from, readable at a glance and parseable by a machine.

An open spec, a JSON schema, and generators in both Python and Node that scan a project and write the file for you. Useful for new contributors, for stakeholders, and for AI agents trying to orient in an unfamiliar codebase.

Ships as
An open spec, a JSON schema, and dual generators
Built with
Python, JavaScript
License
CC0 spec, MIT generators
Status
Early, active

ModelFacts

v0.1.0

A nutrition label for AI models.

Model cards are long prose that goes stale and cannot be validated or compared. "Trained on the internet" is not a fact. ModelFacts moves the objective facts into one small file a machine can parse and a human can read in a minute: parameters, context window, training cutoff, and how hot the built-in safety filters run. AppFacts labels what an app is built from. ModelFacts labels the model behind it.

An open spec, a JSON schema, a validator, and a generator that drafts a label from a Hugging Face model card or a local Ollama model. Hard facts come from structured metadata, never from prose. When a developer withholds a number, the file says undisclosed, because non-disclosure is a fact worth labeling too.

Ships as
An open spec, a JSON schema, a validator CLI, and a label generator
Built with
Node.js, TypeScript
License
CC0 spec, MIT tooling
Status
New, active
// Forge tools

Utilities from our own shop. Each one started as an itch while building, then grew a site and an npm package. Gladly shared.

FilePress

v0.1.2

A folder of Markdown in, a fast prerendered site out.

You write posts as plain files with YAML frontmatter, commit them to git, and build with the filepress CLI. There is no admin UI, no database, and no server at runtime. Edit on a laptop, on GitHub, or from your phone. The next build is the site.

Reverse-chronological index, tags, RSS, sitemap, and a quiet Essay theme you can override. Several of the sites on this page are FilePress, including FilePress itself.

Ships as
npm package `getfilepress` (CLI: `filepress build`)
Built with
SvelteKit, TypeScript
License
MIT
Status
Active, early

IngotVault

v0.1.0

Every commit in a second place you control.

IngotVault scans a workspace, ensures a local backup remote, and pushes every local branch and tag into bare mirrors on a path you choose: USB, SD, NAS, or another disk. It never modifies origin. Force-push is never the default. Deleted branches are not pruned. The mirror is a ratchet.

Forge remotes cover what you pushed upstream. File backups cover bytes on disk. The gap is unpushed branches, repos with no remote, and agents that rebase, amend, or delete a "stale" branch. An append-only spare remote survives that class of failure. Opt-in WIP capture snapshots a dirty tree before an unattended session can erase it.

Ships as
npm package `ingotvault` (CLI: init, list, push, verify)
Built with
Node.js, TypeScript
License
Apache 2.0
Status
Active, early

Finetuna

v1.1.1

Fit more context on your GPU, and keep it.

Not weight fine-tuning. No LoRA, no training. Finetuna tunes Ollama runtime settings (num_ctx, num_batch, num_gpu), verifies the model stays in VRAM, and saves a named variant you can keep. Ollama's defaults are safe, and they often leave a 24GB card running 4K context.

Pairs with ollanet: tune on the host, then reach the model from anywhere on the network. Honest "no change needed" is a feature. Auto-tune only switches settings when the win beats measured noise.

Ships as
npm package `finetuna` (CLI: `finetuna --check`, then `finetuna`)
Built with
Node.js, JavaScript
License
MIT
Status
Active

ollanet

v0.4.1

Find Ollama on any network you already trust, then talk to it.

Scan for Ollama hosts on localhost, LAN, Tailscale, or VPN. Prompt by hostname or IP, stream the reply, and continue later by a short chat hash. Also an MCP server for agents, and a Node library for apps. Nothing leaves the networks you can already reach.

Pairs with Finetuna: the host shapes the model, ollanet finds it and talks to it from another machine. LAN scan is opt-in. Hard-coding 127.0.0.1 treats Ollama like a local daemon. ollanet treats it like a private inference mesh.

Ships as
npm package `ollanet` (CLI, MCP stdio server, Node library)
Built with
Node.js, TypeScript
License
MIT
Status
Active, early

Most of these are pre-1.0 and still moving. If you use one and something breaks, open an issue and we'll look at it.