Harness Academyv1.0
Module 1 · Lesson 1.1•5 mins read

Start With a Goal, Self, and Tool

What the Hell Is a Harness?

People do not wake up looking for an agent. They wake up with a goal. They want to rent a house, clear goods at the port, reconcile customer payments, ship a product, find a customer, or fix a faulty generator.

The first question is never, "Should I use an AI agent?" The question is simply: "How do I get this done?"

For most of human history, people have answered that question in the same order. First, you try to do the work yourself. Then you get a tool so you can do more on your own. If you do not want to sit there operating the tool every time, you hire a worker to follow fixed instructions. And when the work gets too messy for fixed rules and you do not want to sit there making every decision yourself, you hire an agent to act on your behalf.

The Human Progression Toward a GoalProgression Pipeline
Goal
Desired Outcome
Self
100% Control
Tool
Amplifies Self
Worker
Fixed Steps
Agent
Delegated Judgment
Harness
Enable, Constrain, Verify

Each step gives you more capability, and each step requires you to give up a little more direct control.

Once you hand judgment over to an agent, you have a new problem: How do you give someone enough freedom and access to act on your behalf without losing control of the outcome?

What you put around that agent to enable them, limit them, and check their work is the harness. And when you build with AI agents in software, you face the exact same problem.

Let's walk up that ladder step by step and see where an agent is actually needed, and where you should boycott it.

01. Start With a Goal

Forget AI for a moment. Suppose you run a distribution business and your goal this week is simple: get 500 cartons of eggs from your suppliers to your customers.

How do you make it happen? If nobody else is around, you do the whole job yourself. You find the farms, call the suppliers, negotiate prices, arrange transport, contact customers, collect payments, and handle whatever goes wrong on the road. Nothing mysterious is happening. You have a goal and you are trying to achieve it.

02. Self

When you work as Self, you do the job with your own hands. You make the decisions, run the tools, deal with problems, and decide what happens next. You have almost total control.

But you also have an obvious limit: you are one person. You have one brain, two hands, and a fixed amount of time, energy, and expertise. You can push yourself by working longer hours or learning more, but eventually you hit your limit. So you look for another way.

03. Tool

Before hiring somebody else, you find something that makes you more capable on your own. You get a calculator, a spreadsheet, an ATM, a booking website, a forklift, or a piece of software.

The key point is that you are still the operator. The calculator does not decide what numbers you should add. The ATM does not decide how much cash you should withdraw. The booking website does not decide where you should travel. You decide, and the tool helps you carry out your decision.

In software, a Tool is a plain function or CLI script that you run when you need it. Look at how a tool helps you match a bank transfer to an egg order:

typescript• tools/match_payment.ts
export interface EggOrder {
  orderId: string;
  customerName: string;
  cartons: number;
  amountNaira: number;
  paymentRef: string;
  status: "pending" | "paid";
}

export interface BankTransfer {
  transferId: string;
  senderName: string;
  amountNaira: number;
  reference: string;
}

// TOOL: Amplifies your capability, but you are still the operator
export function matchPaymentToOrder(
  transfer: BankTransfer,
  orders: EggOrder[]
): EggOrder | null {
  return (
    orders.find(
      (order) =>
        order.paymentRef === transfer.reference &&
        order.amountNaira === transfer.amountNaira
    ) ?? null
  );
}

The First Boycott

If a tool solves the problem, why hire someone? If the ATM lets you withdraw cash yourself, why pay a banking agent to stand in line for you? If a spreadsheet gives you the answer, why hire somebody to add the numbers by hand? In software, if matchPaymentToOrder() matches your data cleanly, why bring in an AI agent to decide how to match it?

If the tool is enough, stop there. Do not delegate what you do not need to delegate.
Concept Check

Who is in control when you use a tool?

You write the matchPaymentToOrder() function above and run it from your terminal to check a customer's transfer of ₦250,000. Why is this a Tool rather than an Agent?

First Principle

The First Boycott

Whenever a straightforward tool lets you achieve your goal directly without giving up control or paying fees, you boycott hiring anyone else.

Execution Flow
Self + Tool (Function or Script)
100% Control, ₦0 Agency Cost
Core Invariant:Do not delegate what a simple tool can handle directly.
Answer the thought experiment above to proceed