FreeHarnessA free AI orchestration layer for people on a budget

A free AI orchestration layer for people on a budget

One command hands your local workspace to a web AI; another wires the free tiers of several providers into your local coding agent. Your own keys, no account pooling.

路线 A

I have a project and want a web AI to touch my files

The bridge exposes your workspace as a standard endpoint; the other side is a web AI that supports custom MCP. Reading files and applying patches is enough to start; letting it run commands takes a separate grant.

freeharness bridge up

A local URL carrying a credential, a first line you can paste straight to the web AI, and which source it loaded.

路线 B

I want the free tiers of several providers orchestrated

agentpack wires the official free tiers of several providers into one automatic fallback chain: when one rate-limits you, the next one takes over — with keys you registered yourself.

npm run agentpack -- use free-first

The written config plus a list of environment-variable names only — keys never pass through this tool.

Three lines, straight

Five minutes, by hand

Three commands; each step says what you should see.

1Bring the bridge up

npm run bridge:up -- --workspace . --port 4731 --tokens-file .freeharness/tokens.json --label my

Four lines in a fixed order: the credential file path, which source it loaded, a local URL carrying a credential together with the workspace, and the timing from command to result (measured 1.5–2.2 seconds).

2Let the other side connect

Two cases. A local IDE or agent with an MCP client: paste the whole URL into its MCP settings and start a new session for it to load. A web AI with only a chat box: open a fresh conversation and send just the first line it printed, in one piece — don't split it, don't chat first.

3Count the tools locally

curl -s -X POST "http://127.0.0.1:4731/mcp?token=<第 1 步那条>" -H "content-type: application/json" -H "accept: application/json, text/event-stream" -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}"

Count the tools yourself rather than trusting an AI's answer: the first few are list_directory, read_files, find_files, search_files, apply_patch. The one that runs commands is not given by default — granting it is a separate step and it expires on its own. A 406 means your own request carried only one accept type.

Pricing

Free self-host

¥0 forever

The full capability of the open-source base, with no dependency on any paid server.

Trial

Those who want one day of managed convenience

¥1/ day

  • Everything in free self-hosting
  • Managed entry: a persistent subdomain
  • Device binding (up to two)

Monthly

Heavy users of the managed service

¥9.9/ month

  • Everything in the trial tier
  • Priority support
  • Credential rotation and security notices

Yearly

Those set on the managed service long term

¥99/ year

  • Everything in the monthly tier
  • A year without renewal nagging
  • Expiry is not retroactive: local capability always remains
Coming soon

Prices match section 5.1 of the terms of service; the page at purchase time governs. Payment goes through a creator payouts platform and no invoice is issued. There is no payment button on this page — whether the checkout path gets wired in is the project owner's call.

Selected questions

Is the free self-hosted version really free, or free-then-harvest?

Yes — genuinely free, because it is open-core. The full source of agentpack and Bridge is released under Apache-2.0, so you can deploy the whole thing on your own machine with keys you registered on each platform; that path depends on no paid server, and your data and credentials stay in your control with no remote dependency that could be switched off later. What we sell is not the source, but the managed service: we keep the public entry point up (managed relay), run the tunnel lifecycle for you, and give you configuration-free aggregation.

Full answer on the FAQ page

Will you promise “free forever” like some products do?

No empty promises, but we do commit to maintaining it. Precisely: the free self-hosted version keeps being maintained — the open-source software will not turn closed, and local core features will not be removed; third-party free tiers are not promised to last forever, since those tiers are set unilaterally by each platform and can change at any time, and we are only the orchestration layer; and perpetual availability of the managed service is not promised either — a personally operated service may change with circumstances, though we will notify in advance and handle already-purchased rights properly. In one line: the source stays in your hands; the only thing that could ever be harvested is the server.

Full answer on the FAQ page

I don't want any traffic to pass through a third party at all. Is there a way?

Yes, and it is a first-class route: free self-hosting. Building your own tunnel uses your own Cloudflare account (5–30 minutes following our docs), so traffic stays inside your own account and does not pass through any node of ours — a trust advantage unique to open-core, which we treat as a proper feature rather than an escape hatch behind a paywall.

Full answer on the FAQ page

Will you sell my keys or share my accounts?

No — BYOK (Bring Your Own Key) is a hard rule. You use official keys you registered yourself; we pool no accounts, hold nothing on your behalf and resell no tokens, quota or accounts. Nor does the project promise anything like “unlocking paid models” — that is not our business and not compliant. We sell service (tunnel hosting, orchestration), not tokens.

Full answer on the FAQ page

Is the free quota unlimited?

No, and we never promise that. The free quota comes from each platform: there are daily limits, concurrency limits and changes at any time (see each platform's official pricing page). agentpack's value is wiring the free tiers of several platforms into one automatic fallback chain — when A rate-limits you, B takes over — so you get the most out of the quota you already have. The quota policy itself is always the platform's call.

Full answer on the FAQ page