The charter

Six core principles

These govern what goes into the framework and how it is shaped. They are design constraints, not marketing — when a change conflicts with one, the change is wrong until argued otherwise.

01

Human First

Code should be obvious to a human.

TetherPHP must prioritise readable, understandable code. Developers should be able to open an unfamiliar project and quickly understand what it does and where things belong. No cleverness for cleverness' sake.

02

Agent Ready

Everything a human can understand, an agent should be able to understand.

TetherPHP's architecture, conventions and tooling are deliberately designed for AI agents. Predictable naming, explicit dependencies, consistent structure and machine-readable context make it easy for an agent to navigate and modify an application safely.

03

Explicit Over Magic

If something matters, make it visible.

TetherPHP favours explicit behaviour over hidden framework magic. You should be able to trace a request from route to response without needing to understand a pile of implicit framework behaviour.

  1. Request
  2. Route
  3. Action
  4. Domain
  5. Responder
  6. Response
04

One Obvious Way

There should be one obvious way to do things.

TetherPHP is opinionated. Instead of giving developers five different approaches to solving the same problem, it provides a clear, consistent convention. This reduces cognitive load for both developers and agents.

05

Small & Composable

The core should do less, but do it well.

TetherPHP will not become an enormous monolith. The core provides the fundamental building blocks of an application, while additional functionality is composed through packages. Small core. Strong foundations.

06

Tools Are Part of the Framework

The framework should help you understand the application, not just run it.

TetherPHP's CLI and developer tooling are first-class. Commands such as make:action, test, inspect, explain and context help developers and agents understand, build and maintain an application. The framework isn't just the runtime — the tooling is part of the developer experience.