A corrected systems view of the current personal intelligence stack. This version separates useful architecture from accidental complexity, makes Postgres/GBrain/embedding storage explicit, and spells out what actually moves from Gmail, audio memory, Context Ledger, HCP, proposals, Open Tabs, and GBrain.
Hermes as interface/orchestrator; GBrain as durable memory/search/graph; Audio Memory as raw evidence capture; Open Tabs as the operational attention cockpit.
Context Ledger + HCP Control Plane currently add a second staging/proposal layer. They are useful only if they reliably convert source evidence into approved actions. Right now the evidence shows mostly pending Open Tabs proposals, not a mature approval loop.
Raw evidence should flow automatically. Candidate interpretation should be source-backed and reviewable. Derived mutations — Open Tabs changes, compiled GBrain truth, outbound actions — need a clear approve/apply surface.
The old page under-described active Postgres DBs, GBrain tables/embeddings/facts, audio transcript → GBrain slugs, exact Gmail extraction fields, and cross-system write-back.
gbrain_repair_20260510215340 from /root/.gbrain/config.json. The older gbrain Postgres DB exists but is not the active populated brain.
/root/brain.Pages: 199 Chunks: 630 Embedded: 630 Links: 381 Tags: 324 Timeline: 92 By type: original: 43 concept: 38 source: 35 project: 21 idea: 16 inbox: 14 person: 10 personal: 7 company: 6 meeting: 3 original_thinking: 3 investment-research: 1 report: 1 note: 1
text-embedding-3-large1536search_vector GIN indexes.Status: unhealthy; health score: 45.
The page intentionally publishes architecture-level storage shape, not credential rows.
CREATE INDEX idx_chunks_embedding ON public.content_chunks USING hnsw (embedding vector_cosine_ops)CREATE INDEX idx_chunks_embedding_image ON public.content_chunks USING hnsw (embedding_image vector_cosine_ops) WHERE (embedding_image IS NOT NULL)CREATE INDEX idx_chunks_embedding_null ON public.content_chunks USING btree (page_id, chunk_index) WHERE (embedding IS NULL)CREATE INDEX idx_chunks_search_vector ON public.content_chunks USING gin (search_vector)CREATE INDEX idx_facts_embedding_hnsw ON public.facts USING hnsw (embedding vector_cosine_ops) WHERE ((embedding IS NOT NULL) AND (expired_at IS NULL))CREATE INDEX idx_pages_search ON public.pages USING gin (search_vector)CREATE INDEX idx_query_cache_embedding_hnsw ON public.query_cache USING hnsw (embedding vector_cosine_ops) WHERE (embedding IS NOT NULL)CREATE INDEX idx_takes_embedding_hnsw ON public.takes USING hnsw (embedding vector_cosine_ops) WHERE (active AND (embedding IS NOT NULL))| Table | Size |
|---|---|
| budget_ledger | 16 kB |
| budget_reservations | 24 kB |
| calibration_profiles | 48 kB |
| code_edges_chunk | 48 kB |
| code_edges_symbol | 48 kB |
| code_traversal_cache | 96 kB |
| config | 64 kB |
| content_chunks | 16 MB |
| dream_verdicts | 16 kB |
| drift_decisions | 32 kB |
| eval_candidates | 24 kB |
| eval_capture_failures | 24 kB |
| eval_contradictions_cache | 24 kB |
| eval_contradictions_runs | 48 kB |
| eval_takes_quality_runs | 32 kB |
| facts | 1120 kB |
| file_migration_ledger | 24 kB |
| files | 112 kB |
| gbrain_cycle_locks | 64 kB |
| ingest_log | 88 kB |
| links | 200 kB |
| mcp_request_log | 32 kB |
| mcp_spend_log | 32 kB |
| mcp_spend_reservations | 32 kB |
| minion_attachments | 32 kB |
| minion_inbox | 32 kB |
| minion_jobs | 104 kB |
| op_checkpoints | 24 kB |
| page_versions | 344 kB |
| pages | 4256 kB |
| query_cache | 136 kB |
| raw_data | 80 kB |
| search_telemetry | 48 kB |
| sources | 56 kB |
| subagent_messages | 40 kB |
| subagent_rate_leases | 24 kB |
| subagent_tool_executions | 40 kB |
| synthesis_evidence | 16 kB |
| tags | 240 kB |
| take_grade_cache | 32 kB |
| take_nudge_log | 40 kB |
| take_proposals | 40 kB |
| takes | 96 kB |
| think_ab_results | 24 kB |
| timeline_entries | 152 kB |
sqlite at /root/audio-memory/data/audio-memory.sqlite3.capture.cloopos.com.faster-whisper / CPU int8.sources/audio/YYYY-MM-DD/<session> with exact segment evidence, timestamps, confidence, STT model, capture audit.personal/audio-digests/YYYY-MM-DD/<session> with deterministic themes, explicit action candidates, representative quotes, and source link.Raw audio transcripts are evidence. They should not wait for Telegram approval or proposal review before GBrain ingestion.
Open Tabs mutations, compiled truth rewrites, outbound actions, and sensitive/public publishing. Background media/other speakers can be searchable evidence, but not Connor’s belief without attribution.
{
"active_sessions": 0,
"audio_chunks": 262085,
"gbrain_writes": 21,
"memory_candidates": 5,
"notifications": 42,
"sessions": 12,
"transcript_segments": 772,
"twilio_errors": 1
}google.gmail.message_metadata.For Gmail, the collector stores subject/title, sender/from, recipient/to as entities when present, date, labels, snippet/text, raw readonly wrapper metadata, privacy=highly_sensitive, and computed importance. It does not send mail, modify mail, download attachments, or intentionally promote full raw bodies to GBrain.
newer_than:2d -category:promotions -category:socialis:unread newer_than:7d -category:promotions -category:socialis:starred newer_than:30dEnabled=True; calendar=primary; days ahead=7; max=10; importance=7. Stores summary/title, organizer, attendees, start time, location, and first 500 chars of description.
Important simplification: Google Workspace should probably feed GBrain only as curated summaries or reviewed canonical claims, not as unbounded email mirroring. The live code matches that: metadata/snippets in Context Ledger, no body/attachment ingestion.
A narrow local staging ledger for source events before interpretation. Current meaningful use: Google Workspace readonly events. It has 59 context_events total.
Value if kept: dedupe, provenance, privacy labels, source-neutral event schema.
Risk: if it becomes another vague database between source and GBrain without reliable downstream use, it is accidental complexity.
Interprets evidence into events/evidence/open_loops/proposals. Current rows: 213 events, 99 open loops, 70 proposals.
CLI supports proposals generate/list/approve/reject/apply/explain/inbox/decide.
The current successful approval loop is not yet proven by the data: the proposal table is dominated by pending create_open_tab rows. The UI needs to show “why this proposal exists”, source quotes, approve/reject/apply, and post-apply verification.
Use Context Ledger/HCP only for sources that need staging before action. Do not route every memory through HCP. Audio raw transcripts should go straight to GBrain; HCP can observe or propose derived Open Tabs changes later.
Connor can add/list/review via Telegram-facing flows and /root/open-tabs/open_tabs.py. This is the primary operational cockpit for attention, decisions, deadlines, and One Thing.
HCP proposals currently target open-tabs as create_open_tab. These should not silently write; they need a clean approve/apply interface and verification of the created item.
Open Tabs → GBrain promotion creates review-required packets, because not every live cockpit item deserves durable compiled memory.
Open Tabs is not a source of truth about the whole person. It is the live workbench. GBrain is durable meaning; Open Tabs is current attention.
36 total Hermes crons; 29 active. Class names below are operational labels, not hidden product boundaries.
| Job | Class | Schedule | Deliver | Script/agent | Last run |
|---|---|---|---|---|---|
| hermes-auto-update 77e060f64351 · paused | Other | 0 4 * * * | local | hermes_self_heal.py | 2026-05-14T04:00:20.234987+00:00 ok |
| gbrain-sync b8fd45d8211b · active | GBrain maintenance | */15 * * * * | local | gbrain_sync_verify.sh | 2026-05-24T17:45:56.804919+00:00 error: Script exited with code 1 |
| gbrain-maintenance c4f325651101 · paused | GBrain maintenance | 0 3 * * 0 | local | agent | 2026-05-17T03:00:20.076106+00:00 ok |
| gbrain-auto-update 7e7edea448a5 · active | GBrain maintenance | 0 5 * * 0 | local | gbrain_auto_update.sh | 2026-05-24T05:01:05.580072+00:00 ok |
| morning-briefing 93af2f4c49f8 · paused | Other | 0 8 * * * | telegram | agent | 2026-05-13T08:01:02.308102+00:00 ok |
| system-health-monitor fb2730affff2 · paused | Health/watchdog | 0 */6 * * * | telegram | agent | 2026-05-14T06:02:10.081356+00:00 ok |
| weekly-gbrain-value-report 523bada9c3c5 · active | GBrain maintenance | 0 18 * * 5 | telegram:5899070081 | agent | 2026-05-22T18:01:02.482635+00:00 ok |
| gbrain-dream-cycle 4e93af342913 · active | GBrain maintenance | 0 2 * * * | local | gbrain_dream_audit.sh | 2026-05-24T02:08:01.318192+00:00 ok |
| morning-systems-briefing 87276d5f8036 · active | Other | 5 8 * * * | telegram:5899070081 | agent | 2026-05-24T08:07:00.467119+00:00 ok |
| daily-gbrain-what-changed-brief b64f4779389b · active | GBrain maintenance | 20 8 * * * | telegram:5899070081 | gbrain_what_changed_brief.py | 2026-05-24T08:20:40.354383+00:00 ok |
| audio-memory-watchdog 1e7ac4edfa0b · active | Audio memory | every 15m | telegram | audio_memory_watchdog.py | 2026-05-24T17:59:40.310846+00:00 ok |
| codex-usage-brief e1849f491cb4 · active | Other | 0 9 * * * | telegram | codex_usage_brief.py | 2026-05-24T09:00:11.480676+00:00 ok |
| market-awareness-digest 6e07bda94389 · active | External signal ingestion | 30 7 * * * | local | market_awareness_digest.sh | 2026-05-24T07:30:53.513424+00:00 ok |
| audio-memory-live-worker-watchdog 3de12437c495 · paused | Audio memory | every 5m | telegram | audio_memory_live_worker_watchdog.py | 2026-05-20T17:05:37.025425+00:00 ok |
| audio-memory-daily-brief 466ff68fd418 · active | Audio memory | 15 8 * * * | telegram | audio_memory_daily_brief.py | 2026-05-24T08:15:32.544221+00:00 ok |
| audio-memory-alerts 17d265ba819c · active | Audio memory | every 5m | telegram | audio-memory-alerts.sh | 2026-05-24T17:49:57.633693+00:00 ok |
| daily-audio-reflection 2b06653e1a75 · active | Audio memory | 0 20 * * * | telegram | agent | 2026-05-23T20:00:58.498620+00:00 ok |
| gbrain-compound-maintenance 6a5b9729e05f · active | GBrain maintenance | 17 */6 * * * | local | gbrain_compound_maintenance.sh | 2026-05-24T12:17:46.584729+00:00 ok |
| hermes-critical-self-heal ddea5929d5ae · active | Health/watchdog | */30 0-5,23 * * * | telegram | hermes_self_heal.py | 2026-05-24T11:27:30.626925+00:00 ok |
| sendblue-gateway-watchdog 1441d4dcc63b · active | Health/watchdog | every 5m | origin | ensure-sendblue-gateway.sh | 2026-05-24T17:49:57.117446+00:00 ok |
| signal-radar-digest 510e8d30ee84 · active | External signal ingestion | 45 7 * * * | telegram | signal_radar_digest.sh | 2026-05-24T07:50:49.278295+00:00 ok |
| spotify-transcription-worker 8b8473d28f49 · paused | Other | every 120m | telegram | spotify_transcription_worker.sh | 2026-05-17T21:07:15.696079+00:00 error: Script exited with code -9 |
| open-tabs-daily-focus 890607e62816 · active | Open Tabs | 35 8 * * * | telegram:5899070081 | open_tabs_daily.sh | 2026-05-24T08:35:44.903330+00:00 ok |
| open-tabs-evening-capture c1ec506baf78 · active | Open Tabs | 15 21 * * * | telegram:5899070081 | open_tabs_capture_prompt.sh | 2026-05-23T21:15:11.995320+00:00 ok |
| open-tabs-weekly-review ad2bedaa7920 · active | Open Tabs | 30 18 * * 0 | telegram:5899070081 | open_tabs_weekly.sh | 2026-05-17T18:30:52.574692+00:00 ok |
| cron-meta-audit dbb0e17ba826 · active | Other | 0 19 * * 0 | telegram:5899070081 | cron_meta_audit.py | 2026-05-17T19:00:06.193481+00:00 ok |
| open-tabs-gbrain-promotion 0c8cb9ad0e8c · active | GBrain maintenance | 45 18 * * 0 | telegram:5899070081 | open_tabs_gbrain_proposal.sh | 2026-05-17T18:47:03.749569+00:00 ok |
| gbrain-contradiction-probe 70d7c29f9344 · active | GBrain maintenance | 10 3 * * 1 | local | gbrain_contradiction_probe.sh | |
| signal-radar-hourly-last-hour 7eab9e35ef58 · active | External signal ingestion | every 60m | origin | signal_radar_hourly.sh | 2026-05-24T17:58:40.039883+00:00 ok |
| daily-pulse-synthesis 9605cf2e83e8 · active | Control plane / proposals | 50 8 * * * | telegram:5899070081 | pulse_context.py | 2026-05-24T08:51:03.158628+00:00 ok |
| audio-proposal-inbox cd0db34901ff · active | Audio memory | every 120m | telegram:5899070081 | audio_proposal_inbox.py | 2026-05-24T17:29:46.398960+00:00 ok |
| control-plane-runtime e047d4aa9190 · paused | Control plane / proposals | every 240m | telegram:5899070081 | control_plane_runtime.py | 2026-05-24T15:00:28.828016+00:00 ok |
| personal-system-registry-doc-refresh 0859b21f5146 · active | Other | 0 */6 * * * | local | personal_system_registry_doc.py | 2026-05-24T12:00:22.793315+00:00 ok |
| personal-intelligence-orchestrator-local 076afe055a88 · active | Other | every 240m | local | personal_orchestrator_local.sh | 2026-05-24T15:52:47.704292+00:00 ok |
| moving-through-midday-checkin 37d3efc66eb9 · active | Other | 0 12 * * * | origin | moving_through_midday.sh | |
| personal-orchestrator-reactive-loop cbedc4f819ba · active | Other | every 5m | local | personal_orchestrator_reactive.sh | 2026-05-24T17:59:40.264893+00:00 ok |
Focused schema view: the fields that explain data movement. Full table inventories are included where useful, but secrets/tokens are not expanded.
Path: /root/hermes-control-plane/data/context-ledger.sqlite3 · tables: 3
idTEXTlabelTEXTlayerTEXTstatusTEXTpolicy_jsonTEXTupdated_atTEXTidTEXTlabelTEXTsourceTEXTstatusTEXTpolicy_jsonTEXTupdated_atTEXTidINTEGERsourceTEXTexternal_idTEXTevent_typeTEXToccurred_atTEXTingested_atTEXTactorTEXTentities_jsonTEXTtitleTEXTtextTEXTraw_jsonTEXTprivacyTEXTimportanceREALhashTEXTinterpretation_statusTEXTgbrain_statusTEXTproposal_statusTEXTPath: /root/hermes-control-plane/data/control-plane.sqlite3 · tables: 9
source_idTEXTsource_typeTEXTdisplay_nameTEXTowner_productTEXTenabledINTEGERconnector_modeTEXTprivacy_tierTEXTraw_store_policyTEXTgbrain_policyTEXTallowed_actionsTEXTapproval_required_forTEXTnotification_policyTEXThealth_check_commandTEXTlast_checked_atTEXTlast_success_atTEXTlast_errorTEXTevent_idTEXTsource_idTEXTsource_typeTEXToccurred_atTEXTingested_atTEXTactorTEXTtitleTEXTsummaryTEXTraw_refTEXTcanonical_urlTEXTcontent_hashTEXTprivacy_tierTEXTevent_kindTEXTlabelsTEXTconfidenceREALthread_keyTEXTentity_refsTEXTevidence_idTEXTevent_idTEXTsource_idTEXTvisibilityTEXTquoteTEXTredacted_quoteTEXTraw_refTEXTretrieval_hintTEXTloop_idTEXTtitleTEXTlaneTEXTkindTEXTstatusTEXTownerTEXTsource_refsTEXTevidence_refsTEXTgbrain_refsTEXTopen_tabs_refTEXTsignal_radar_refTEXTwhy_it_mattersTEXTcurrent_realityTEXTdesired_resultTEXTnext_actionTEXTdefinition_of_doneTEXTdue_atTEXTreview_atTEXTpriority_scoreREALurgency_scoreREALconfidenceREALsensitivityTEXTcreated_atTEXTupdated_atTEXTclosed_atTEXTclosure_evidence_refsTEXTproposal_idTEXTproposal_typeTEXTsource_event_idsTEXTtarget_refTEXTproposed_change_jsonTEXTreasonTEXTconfidenceREALrisk_levelTEXTapproval_stateTEXTcreated_atTEXTapproved_atTEXTrejected_atTEXTapplied_atTEXTapplied_refTEXTdecision_reasonTEXTjob_idTEXTpresetTEXTobjectiveTEXTsource_loop_idTEXTspec_pathTEXTworkdirTEXTallowed_pathsTEXTforbidden_pathsTEXTverification_commandsTEXTstatusTEXTattemptsINTEGERlast_errorTEXTevidence_pathsTEXTsummaryTEXTconfidenceREALstarted_atTEXTfinished_atTEXTexit_codeINTEGERoutput_pathTEXTPath: /root/open-tabs/open-tabs.sqlite3 · tables: 7
idINTEGERtitleTEXTlaneTEXTkindTEXTstatusTEXTdeadlineTEXTimportanceINTEGERurgencyINTEGERimpactINTEGEReffortINTEGERidentity_alignmentINTEGERvalues_jsonTEXTnext_actionTEXTdefinition_of_doneTEXTquestionTEXTnotesTEXTcreated_atTEXTupdated_atTEXTobjective_idTEXThorizonTEXTcurrent_realityTEXTdesired_resultTEXTtensionTEXTleverage_pointTEXTzoneTEXTPath: /root/audio-memory/data/audio-memory.sqlite3 · tables: 11
idTEXTproviderTEXTprovider_call_sidTEXTstatusTEXTstarted_atTEXTended_atTEXTsample_rateINTEGERaudio_pathTEXTmetadata_jsonTEXTidINTEGERsession_idTEXTsequenceINTEGERtimestamp_msINTEGERpayload_formatTEXTbyte_countINTEGERrmsREALcreated_atTEXTidINTEGERsession_idTEXTwindow_indexINTEGERstart_msINTEGERend_msINTEGERchunk_start_sequenceINTEGERchunk_end_sequenceINTEGERaudio_pathTEXTstatusTEXTtranscript_segment_idINTEGERerrorTEXTcreated_atTEXTupdated_atTEXTidINTEGERkindTEXTsession_idTEXTwindow_idINTEGERstatusTEXTattemptsINTEGERmax_attemptsINTEGERerrorTEXTcreated_atTEXTupdated_atTEXTlocked_atTEXTcompleted_atTEXTidINTEGERsession_idTEXTchunk_start_sequenceINTEGERchunk_end_sequenceINTEGERtextTEXTstart_msINTEGERend_msINTEGERconfidenceREALmodelTEXTcreated_atTEXTidINTEGERsession_idTEXTtranscript_segment_idINTEGERkindTEXTtextTEXTsource_quoteTEXTconfidenceREALstatusTEXTcreated_atTEXTmetadata_jsonTEXTidINTEGERsession_idTEXTtranscript_segment_idINTEGERsource_slugTEXTdigest_slugTEXTkindTEXTdestinationTEXTsource_quoteTEXTstart_msINTEGERend_msINTEGERconfidenceREALriskTEXTpolicyTEXTrationaleTEXTpayload_jsonTEXTstatusTEXTapplied_atTEXTerrorTEXTcreated_atTEXTidINTEGERsession_idTEXTcandidate_idINTEGERslugTEXTstatusTEXTerrorTEXTcreated_atTEXTidINTEGERsession_idTEXTtargetTEXTmessageTEXTstatusTEXTerrorTEXTcreated_atTEXTidINTEGERsession_idTEXTevent_typeTEXTpayload_jsonTEXTcreated_atTEXTOne interface should make the whole path legible: input → raw store → interpretation → proposal → applied state → feedback. If a layer cannot explain its contribution in that path, simplify or remove it.
Approval must produce an observable artifact: an Open Tabs item id, GBrain slug, applied timestamp, and verification check. Without this, proposal systems feel like pending limbo.
Context Ledger/HCP need either a sharper role as the action/proposal control plane, or they should be bypassed for simple evidence→GBrain paths.