Cortex

The Human Model

How Cortex models AI agents as compositions of human-like traits, skills, and behaviors.

Cortex takes a fundamentally different approach to AI agent design. Instead of writing system prompts imperatively ("You are a helpful assistant that..."), you declare an agent's identity using the same building blocks that make humans unique.

Philosophy

People are not defined by a single instruction. They are the product of:

  • Skills they have learned (what they can do)
  • Personality traits that shape how they work
  • Behavioral habits that emerge from experience
  • Thinking patterns that guide their reasoning
  • Communication preferences that define their voice
  • Perceptual filters that determine what they notice

Cortex makes each of these a first-class, composable entity.

The seven aspects

AspectPackageGo typeDescription
Skillskillskill.SkillCapabilities, tools, and knowledge
Traittraittrait.TraitPersonality dimensions on bipolar axes
Behaviorbehaviorbehavior.BehaviorCondition-triggered action patterns
Cognitive Stylecognitivecognitive.StylePhase-based thinking strategies
Communication Stylecommunicationcommunication.StyleTone, formality, verbosity
Perceptionperceptionperception.ModelAttention filters and focus
Personapersonapersona.PersonaThe complete identity composition

Composition hierarchy

Skills, Traits, and Behaviors are standalone entities stored independently with their own CRUD APIs. They are composed together through a Persona, which references them by name.

Cognitive Style, Communication Style, and Perception are value objects embedded directly in the Persona struct.

The Agent Config then references a Persona (persona mode) or defines its own system prompt and tools (flat mode).

Agent Config
  └── Persona (via PersonaRef)
        ├── Skills[]       (standalone entities, referenced by name)
        ├── Traits[]       (standalone entities, referenced by name)
        ├── Behaviors[]    (standalone entities, referenced by name)
        ├── CognitiveStyle (embedded value object)
        ├── CommunicationStyle (embedded value object)
        └── Perception     (embedded value object)

Declarative vs imperative

Traditional approach (imperative):

You are a senior software engineer. Be thorough and methodical.
Focus on security issues. Use a professional but friendly tone.
Always check the code before suggesting changes.

Cortex approach (declarative):

persona := &persona.Persona{
    Identity: "A senior software engineer with 10+ years of experience",
    Skills:   []persona.SkillAssignment{{SkillName: "code-review"}},
    Traits:   []persona.TraitAssignment{{TraitName: "thoroughness"}},
    Behaviors: []string{"verify-before-suggest"},
    CommunicationStyle: communication.Style{
        Tone: "professional", Formality: 0.7,
    },
}

The declarative approach is composable, reusable, and version-controlled. Change one trait and it updates every agent that uses it.

On this page