Teams
A team owns datasources and decides who can query them. Members of a team can query every
datasource it owns; removing someone removes that access immediately.
If two groups need different slices of the same database, give them separate teams with
separate datasources and different exposure rules, rather than one shared team.
Datasources
A datasource is one database connection plus the rules describing what is visible through
it. TeamDuo supports PostgreSQL, MongoDB, and BigQuery, connecting with a
read-only credential you create.
They share one exposure model and one guarantee, but they enforce it by genuinely different
means — see Security model.
Each source keeps its own vocabulary. What TeamDuo stores as one concept is reported as
schema/table on PostgreSQL, database/collection on MongoDB, and dataset/table on BigQuery,
so an agent is never told “schema” about a collection.
Exposure
Exposure is the explicit list of tables and columns an agent may read. Nothing is visible
by default — a newly connected datasource exposes nothing until someone chooses what to
share.
Exposure is enforced on every query, and a query referencing anything outside it is refused
by name.
Documentation
Exposure decides what an agent may read; documentation decides whether it reads it
correctly. TeamDuo profiles your data, drafts documentation per table, and serves what you
publish to every agent querying that database.
This is the part a competitor can’t replicate cheaply. A SELECT-only role takes an
afternoon; knowing that status = 3 means refunded does not. See
Documentation.
Artifacts
An artifact is a dashboard an agent writes, stored as queries and presentation, never
rows. It runs its queries as whoever opens it, so it stays current and shows each viewer
only what they’re allowed to see. See Artifacts.
Query enforcement
Every query is checked before it runs. A refusal names what was blocked — “table
public.salaries is not exposed”, “this query would scan 42 GB, the limit is 1 GB” —
because an agent that is told why corrects itself, and one given a generic error retries
blind.
Audit
Every query is recorded with the datasource, the actor, the statement, the row count, and
the duration — and never a cell of your data. Review the log after widening exposure, to
see what the new surface is actually used for.
Exposure controls what agents can read, not what they can infer. Treat any column you
expose as visible to everyone on the team.