✻ Welcome to grunt · grunt.run

grunt

Free agent for everyone.

grunt exists so that a person who cannot pay for intelligence still gets an agent that does serious work.

In Pi, the person sees one agent that keeps working; grunt is the free engine underneath it.

npx usemilo

The command will be npx usegrunt. Today the package publishes as usemilo.

A pixel-art grunt in a yellow hard hat and orange work vest, smoking a cigar, standing on blocky voxel ground.

What grunt is

grunt is a local model endpoint that the person's harness, such as Pi, calls like any other model.

Behind that endpoint, grunt turns free tokens scattered across siloed quotas and hard-to-reach harnesses into one model that keeps answering.

It owns exactly one thing: sourcing free tokens and routing each task to a source that can finish it.

It serves the knowledge worker who budgets for food and rent before any AI plan, and who falls further behind those who can pay.

Free is the product, not a tier

grunt is MIT licensed and free to use.

A default install spends no money and no paid allowance.

Every source that can cost money or plan quota is off until the person names it.

grunt never buys credits, never upgrades a plan, and never switches to a paid model on its own.

When a free source carries a hidden price, such as prompt retention or terms risk, grunt says so in plain words.

It does not compete with frontier models on benchmarks; it competes on cost to the person, which is zero.

Free tokens are personal

Free tokens are given to each person for their own use, so grunt uses them only for that person's own work.

grunt holds at most one account per person per service, in that person's name.

grunt never farms accounts, rotates identities, or evades a provider's identity checks.

It does not serve industrial or bulk workloads.

One adapter per task, hand off at the wall

Each new user turn starts a task, and the daemon binds it to one adapter, drawn at random by weight.

The task stays on that adapter until it returns a 429, fails past a set tolerance, or loses its login.

The next adapter gets the original task, the edits so far and the last output, and continues instead of restarting.

grunt opens with two stable adapters, Freebuff and OpenCode, at 0.5 each.

Work stays on the person's machine

The daemon serves the model endpoint on localhost and binds loopback only.

The gateway serves the published registry; it never receives prompts, files or keys.

Provider keys stay in the person's vault, and grunt receives scoped, revocable grants instead.

No key, token or device secret appears in logs, terminal output or config.

One command to a working agent

Installs dependencies, the daemon and the starting adapters, and points Pi at grunt.

Other harnesses that accept a custom model endpoint, such as Claude Code and opencode, can use grunt the same way.

Setup reports success only after a real task travels through the installed daemon.

One refused provider drops out; the rest still install.