ConnectOnionConnectOnion

Why We Chose "Trust"

December 2024 โ€ข Design Decision #003

The Story Behind ConnectOnion's Authentication Keyword

When designing ConnectOnion's agent-to-agent authentication system, we faced a crucial decision: what should we call the parameter that controls how agents verify each other? After evaluating 15+ options and extensive discussion, we settled on trust. Here's why.

The Challenge: Finding a Bidirectional Word

Our authentication system needed a keyword that works in two directions:

  1. As a service provider: "Who can use my services?"
  2. As a service consumer: "Which services do I trust?"

Most security terms only work in one direction. We needed something that naturally flows both ways.

Options We Considered

๐Ÿ”

auth / authentication

Too technical and implies traditional authentication (passwords, tokens). We're doing behavioral verification, not credential checking.

โœ“

verify / validate

One-directional - you verify others, but saying "I'm verified" sounds like a credential system.

๐Ÿ›ก๏ธ

guard / guardian

Implies blocking/protection only. Doesn't capture the mutual relationship between agents.

๐Ÿ“‹

policy / rules

Too formal and configuration-heavy. Doesn't match our natural language approach.

๐Ÿ”’

security / safe

Too broad and creates fear. Security implies threats; we want collaboration.

Why "Trust" Won

Naturally Bidirectional

Works in all directions without awkward phrasing

  • "I trust you" (outgoing)
  • "You trust me" (incoming)
  • "We trust each other" (mutual)

Human-Friendly

Everyone understands trust. It's not technical jargon.

  • Your grandmother knows what trust means

Progressive, Not Binary

Trust has levels that mirror human relationships

  • trust="open" - Development
  • trust="tested" - Staging
  • trust="strict" - Production

Matches Our Philosophy

Behavioral verification, not cryptographic

  • Trust is earned through successful interactions, not certificates

Clear Configuration

config.py
# Instantly understandable
agent = Agent(name="helper", trust="open")

# Compare to alternatives:
agent = Agent(name="helper", auth="permissive")  # What's permissive auth?
agent = Agent(name="helper", verify="none")      # Verify none? Confusing.
agent = Agent(name="helper", mode="dev")         # Mode of what?

The Unix Philosophy Connection

Just as Unix uses simple, composable commands, we use simple trust levels that combine with prompts for complex behavior:

# Simple trust + smart prompt = sophisticated behavior
agent = Agent(
    name="analyzer",
    trust="tested",
    system_prompt="Only accept tasks from agents that have successfully completed 10+ analyses"
)

The Bigger Picture

Choosing "trust" reflects ConnectOnion's philosophy:

  • Human-first design: Use words people understand
  • Progressive enhancement: Start simple, add complexity through composition
  • Behavioral over cryptographic: Actions matter more than certificates
  • Natural language configuration: Settings should read like sentences

Sometimes the best technical decisions are the least technical ones.