The Automation Agency
Case study

Forge

A local agent runtime: you define the workflow, your own models run it, and you watch it happen.

AI workflowDashboard & internal tool

Context

Own product, in progress. Everything runs on the user's machine against their own Ollama models: no API keys, no cloud, no per-token cost.

The problem

Pointing a local model at a large task the way you would point a cloud chat model at one fails in a predictable way. One huge prompt produces a long reasoning run that gets cut off, and each subsequent step carries the whole transcript, so prompts grow until the context window ends the job. Smaller local models hit that wall much sooner than hosted ones.

What I'm building

  • Workflows as typed graphs defined in YAML — agent nodes (a model step with tools, run in a bounded loop), tool nodes (called directly, exit code decides pass or fail), branch, map and human nodes for input.
  • Named channels between nodes instead of a shared transcript. A node receives only what it declared it needs, which is what stops step twelve costing more than step two.
  • A local web UI for defining and watching runs.
  • A mixture-of-agents layer — several models presented behind one model id in the fleet.

Stack

Python · FastAPI · httpx · Ollama · a browser UI served locally.

Why this shape

Python owns the control flow and the model fills in the leaves. That division is the whole design: branching, iteration and failure handling are things code is good at and models are unreliable at, so they are not delegated. The bounded loop around each agent node means a step that goes wrong fails that step rather than the run.

It is also a deliberate bet against per-token cost for a class of work — bulk, repetitive, privacy-sensitive, or simply long — where a local model is good enough and the economics of a hosted one are not.

Status

Early. The workflow engine, node types, routing and the local UI exist and run. It is not yet packaged for anyone but me.

Next step

Twenty minutes. No pitch, no pressure.

If something here is close to what you need, bring the problem and I will say how close. If it is not, I will say that instead.