This doc describes the current Palisades / Optimizer / IBKR integration as of Dec 2025.
At a high level you have four main planes:
allocator_api (allocator jobs)ib_events_api (read‑only access to ib:events)Initiates commands into Redis streams (e.g. allocator:jobs, oms:commands).
Compute plane (Optimizer)
optimizer on a private subnet.Runs allocator_worker as a systemd service:
allocator:jobs (Redis stream).nts-household-artifacts).allocator:job:{job_id} hashes.Execution plane (IBKR)
ibkr on a private subnet.Runs:
ibgatekeeper worker as a systemd service:oms:commands (Redis stream).ib:events.Data plane (Redis + S3)
allocator_worker user (limited to allocator:* / idem:* etc.).ibgatekeeper user (limited to oms:* and ib:*). nts-household-artifacts bucket where allocator worker writes PPTX / reports.POST /allocator/jobs on Palisades.allocator_api:SubmitAllocReq).allocator:jobs with a JSON envelope.allocator_worker (Optimizer box):allocator:jobs using a consumer group.job payload and parameters (n_sims, n_jobs, grid_step, payout_rate, etc.).allocator:job:{job_id} hash.GET /allocator/jobs (list) GET /allocator/jobs/{job_id} (detail) GET /allocator/jobs/{job_id}/report → presigned S3 URL for download.kind="oms.submit") and pushes to oms:commands via xadd.ibgatekeeper:oms:commands with consumer group oms.oms.submit:ib.order_received event.oms.submit and ib.order_received into ib:events.ib_events_api (Palisades):/ib/events/tail endpoint to tail ib:events.limit, msg_id, order_index.ib_events_api to fetch a tail of events.(msg_id, order_index).This document is intentionally high‑level; see the per‑component docs for exact payload shapes and endpoints.