TeamAPI latest
On this page
  1. Team-interaction organigram: --scope topology
  2. DDD context map: --scope context-map
  3. ‍💼 Role hierarchy: --scope hierarchy --team stream-checkout
  4. Org-wide role hierarchy: --scope org-hierarchy

Diagrams

teamapi render <patterns> --scope <scope> renders the resolved org graph as Mermaid or DOT, where <scope> is topology, context-map, hierarchy (needs --team <id>), or org-hierarchy. Add --format dot for Graphviz, --out <file> to write to disk instead of stdout, or --with-agents to include declared agents in org-hierarchy. The diagrams below are ACME Org's.

Team-interaction organigram: --scope topology#

Who talks to whom, and how tightly.

flowchart LR
  enabling_devex["Enabling DevEx"]
  platform_payments["Platform Payments"]
  stream_checkout["Stream Checkout"]
  stream_onboarding["Stream Onboarding"]
  stream_checkout -->|"platform / x-as-a-service"| platform_payments
  stream_checkout -->|"collaboration / depends (Slowing)"| stream_onboarding
  stream_onboarding -.->|"facilitating"| enabling_devex
  stream_onboarding -.->|"depends (OK)"| platform_payments
  classDef default fill:#ede9fe,stroke:#7c3aed,stroke-width:1px,color:#1e1b4b;

DDD context map: --scope context-map#

This view maps the same relationships to DDD patterns, showing how the underlying software should fit together. A team's explicit contextMappingPattern takes precedence. When none is declared, TeamAPI infers one from the Team Topologies interaction mode (x-as-a-serviceOpenHostService, collaborationPartnership). facilitating remains unclassified because it describes coaching, not a runtime integration.

flowchart LR
  enabling_devex["Enabling DevEx"]
  platform_payments["Platform Payments"]
  stream_checkout["Stream Checkout"]
  stream_onboarding["Stream Onboarding"]
  stream_checkout -->|"CustomerSupplier"| platform_payments
  stream_checkout -->|"Partnership (inferred)"| stream_onboarding
  stream_onboarding -->|"unclassified"| enabling_devex
  classDef default fill:#ede9fe,stroke:#7c3aed,stroke-width:1px,color:#1e1b4b;

‍💼 Role hierarchy: --scope hierarchy --team stream-checkout#

Who reports to whom on one team, and who's actually sitting in each seat: roles[]/reportsTo annotated with the members[] filling them, laid out top-down like a conventional org chart.

flowchart TD
  backend_engineer["Checkout Backend Engineer (Engineer) — Yuki Tanaka"]
  frontend_engineer["Checkout Frontend Engineer (Engineer) — Fatima Al-Sayed"]
  tech_lead["Checkout Tech Lead (TechLead) — Diego Alves"]
  tech_lead --- backend_engineer
  tech_lead --- frontend_engineer
  classDef default fill:#ede9fe,stroke:#7c3aed,stroke-width:1px,color:#1e1b4b;

Org-wide role hierarchy: --scope org-hierarchy#

The same reporting lines, zoomed out to the whole company, one box per team. A solid arrow is formal reporting (reportsTo/reportsToRef, same-team or cross-team); a dashed one is alignsWith, for the ties the hierarchy doesn't draw.

Add --with-agents to draw each team's declared agents[] too, hanging off the human whose ownerId names them by a dotted "supervises" edge. Agents are drawn as participants but never as boxes in the chart — an agent placed in the hierarchy the way a person is would imply accountability sits with it, when it never does. An agent nobody owns gets no incoming edge and visibly floats, which is exactly what it is.

Each alignsWith[] entry takes an optional kindaligns-with (the default), advises, learns-from, or community-of-practice — naming the informal network work actually travels along. Those relationships tend to exist for months before anyone draws a box for them, so teamapi gaps also reports how many cross-team role relationships the reporting lines explain, and how many they don't.

flowchart TD
  subgraph enabling_devex["Enabling DevEx"]
    enabling_devex__coach["DevEx Coach (DeliveryLead) — Marta Kowalski"]
  end
  subgraph platform_payments["Platform Payments"]
    platform_payments__head_of_engineering["Head of Engineering (EngineeringManager) — vacant"]
    platform_payments__ledger_engineer["Ledger Engineer (Engineer) — Lin Zhao"]
    platform_payments__payments_engineer["Payments API Engineer (Engineer) — Sam Okafor"]
    platform_payments__tech_lead["Payments Tech Lead (TechLead) — Priya Raman"]
  end
  subgraph stream_checkout["Stream Checkout"]
    stream_checkout__backend_engineer["Checkout Backend Engineer (Engineer) — Yuki Tanaka"]
    stream_checkout__frontend_engineer["Checkout Frontend Engineer (Engineer) — Fatima Al-Sayed"]
    stream_checkout__tech_lead["Checkout Tech Lead (TechLead) — Diego Alves"]
  end
  subgraph stream_onboarding["Stream Onboarding"]
    stream_onboarding__engineer["Onboarding Engineer (Engineer) — Aisha Bello"]
    stream_onboarding__tech_lead["Onboarding Tech Lead (TechLead) — Noah Fischer"]
  end
  platform_payments__head_of_engineering --> platform_payments__tech_lead
  platform_payments__tech_lead --> platform_payments__payments_engineer
  platform_payments__tech_lead --> platform_payments__ledger_engineer
  stream_checkout__tech_lead --> stream_checkout__backend_engineer
  stream_checkout__tech_lead --> stream_checkout__frontend_engineer
  stream_onboarding__tech_lead --> stream_onboarding__engineer
  platform_payments__head_of_engineering --> stream_checkout__tech_lead
  stream_checkout__tech_lead -.->|"learns from"| enabling_devex__coach
  platform_payments__head_of_engineering --> stream_onboarding__tech_lead
  stream_onboarding__tech_lead -.->|"aligns with"| enabling_devex__coach
  classDef default fill:#ede9fe,stroke:#7c3aed,stroke-width:1px,color:#1e1b4b;