All tables live in the public schema. Managed by Alembic (SQLAlchemy 2.0 models).
| Column |
Type |
Notes |
id |
UUID |
PK |
name |
varchar(200) |
unique |
settings |
jsonb |
retention, redaction overrides, tz |
created_at |
timestamptz |
|
updated_at |
timestamptz |
|
| Column |
Type |
Notes |
id |
UUID |
PK |
email |
varchar(320) |
unique, citext-normalized |
display_name |
varchar(200) |
|
password_hash |
text |
argon2id PHC string |
is_active |
boolean |
default true |
created_at |
timestamptz |
|
updated_at |
timestamptz |
|
| Column |
Type |
Notes |
id |
UUID |
PK |
user_id |
UUID |
FK → users.id CASCADE |
project_id |
UUID |
FK → projects.id CASCADE |
role |
enum(owner, admin, operator, viewer) |
|
created_at |
timestamptz |
|
Unique on (user_id, project_id).
| Column |
Type |
Notes |
id |
UUID |
PK |
project_id |
UUID |
FK → projects.id CASCADE |
name |
varchar(200) |
unique with project_id |
token_hash |
text |
unique, HMAC-SHA256 |
protocol_version |
varchar(20) |
|
framework_adapter |
varchar(40) |
|
engine_adapters |
text[] |
|
scheduler_adapters |
text[] |
|
capabilities |
jsonb |
|
state |
enum(online, offline, unknown) |
|
last_seen_at |
timestamptz |
|
last_connect_at |
timestamptz |
|
metadata |
jsonb |
|
created_at |
timestamptz |
|
updated_at |
timestamptz |
|
Indexes: (project_id, state), (last_seen_at).
| Column |
Type |
Notes |
id |
UUID |
PK |
project_id |
UUID |
FK → projects.id CASCADE |
agent_id |
UUID |
FK → agents.id SET NULL |
engine |
varchar(40) |
|
name |
varchar(500) |
|
queue |
varchar(200) |
|
state |
enum |
pending/started/succeeded/failed/cancelled/retried/lost |
args_redacted |
jsonb |
|
kwargs_redacted |
jsonb |
|
error |
jsonb |
{exc_type, exc_msg, traceback_redacted} |
retried_as |
UUID |
FK → tasks.id |
group_id |
varchar(200) |
Celery group_id / null |
enqueued_at |
timestamptz |
|
started_at |
timestamptz |
|
finished_at |
timestamptz |
|
created_at |
timestamptz |
|
updated_at |
timestamptz |
|
Indexes: (project_id, state), (project_id, name), (enqueued_at).
| Column |
Type |
Notes |
id |
UUID |
PK |
task_id |
UUID |
FK → tasks.id CASCADE |
agent_id |
UUID |
FK → agents.id SET NULL |
event_type |
varchar(40) |
task_sent/started/succeeded/failed/retry/cancelled/expired |
ts |
timestamptz |
from agent clock |
payload |
jsonb |
redacted event data |
created_at |
timestamptz |
brain receipt time |
Index: (task_id, ts).
| Column |
Type |
Notes |
id |
UUID |
PK |
project_id |
UUID |
FK → projects.id CASCADE |
agent_id |
UUID |
FK → agents.id SET NULL |
scheduler |
varchar(40) |
|
name |
varchar(200) |
|
task |
varchar(500) |
|
schedule_type |
enum(cron, interval, date) |
|
expression |
varchar(200) |
cron string or interval spec |
args |
jsonb |
|
kwargs |
jsonb |
|
enabled |
boolean |
|
last_run_at |
timestamptz |
|
next_run_at |
timestamptz |
|
metadata |
jsonb |
|
created_at |
timestamptz |
|
updated_at |
timestamptz |
|
| Column |
Type |
Notes |
id |
UUID |
PK, ordered (ULIDs) |
ts |
timestamptz |
|
actor_user_id |
UUID |
nullable (system events) |
project_id |
UUID |
nullable (global events) |
action |
varchar(100) |
e.g. task.retry |
target_type |
varchar(40) |
|
target_id |
UUID |
|
details |
jsonb |
|
row_hmac |
varchar(64) |
hex-encoded HMAC-SHA256 |
prev_row_hmac |
varchar(64) |
null for genesis |
Index: (project_id, ts), (action).
| Column |
Type |
Notes |
id |
UUID |
PK |
user_id |
UUID |
FK → users.id CASCADE |
expires_at |
timestamptz |
sliding; 14 days |
data |
jsonb |
session payload |
created_at |
timestamptz |
|
| Column |
Type |
Notes |
id |
UUID |
PK |
project_id |
UUID |
FK → projects.id CASCADE |
email |
varchar(320) |
target |
role |
enum |
role on accept |
token_hash |
text |
HMAC-SHA256 |
expires_at |
timestamptz |
72h from creation |
accepted_at |
timestamptz |
null until accepted |
created_by |
UUID |
FK → users.id |
created_at |
timestamptz |
|
| Column |
Type |
Notes |
id |
UUID |
PK |
user_id |
UUID |
FK → users.id CASCADE |
token_hash |
text |
|
expires_at |
timestamptz |
60 min |
used_at |
timestamptz |
null until used |
created_at |
timestamptz |
|