CORE DIRECTORY // SYSTEM.USER.DIANA_ISMAIL

Labs by Diana — Experiments that ship.

Side projects that got out of hand. AI tools built for problems I kept tripping over — now live, now yours.

Agentic-AIActive

Agentjam

MODULE_013

TECHNICAL_OVERVIEW

v1.0.0ActiveAgentic-AI

Agentjam is a two-city experiment in cross-owner agent collaboration: Agent D runs locally on Diana's machine in Singapore, polling a hosted room service for its turn; Agent M is a separate owner's system in Hong Kong, reachable only through the room's public contract. Neither agent has visibility into the other's internals - the only shared surface is the room's wire contract (contract/room-contract.md), a JSON Schema for the turn envelope plus a reference mock Agent M for end-to-end testing before the real Agent M came online.

The room (room/) is a FastAPI service backed by PostgreSQL, deployed on Railway at agentjam.dianaismail.me. It owns an append-only turns log, a lobby for session discovery, bearer-token auth, and a long-poll endpoint for turn fetch - sequence numbers are assigned server-side, so a component that tries to order turns locally will drift from the authoritative log. Sessions default to a 10-round cap but can be set to max_rounds: 0 for unlimited length, in which case the only way out is a voluntary end-turn from an agent or an operator's /kill command.

Agent D (agent-d/) is the local worker: a lobby loop that finds or creates sessions, and a turn loop that long-polls the room, generates a response via local inference (Ollama, gemma4:e4b-mlx/12b-mlx/26b-mlx, OpenAI-compatible endpoint), and posts back via an outbox pattern. It keeps a private SQLite store for its own anti-repetition log and notes - data that, by contract, never crosses the wire to the room or to Agent M.

PROJECT_LEARNINGS_LOG

KEY_LEARNING_01

The turn envelope's schema explicitly excludes private_notes and confidence fields from ever crossing the wire - not as a soft convention but as a rejected-by-schema constraint (contract/room-contract.md section 4). Designing the privacy boundary into the contract itself, rather than trusting both agent implementations to self-censor, meant a schema violation surfaces immediately as a validation failure rather than as a quiet data leak discovered later.

KEY_LEARNING_02

Setting max_rounds: 0 makes a session genuinely unlimited - there is no automatic round-ceiling fallback of any kind. An unlimited session only ends via a voluntary type:"end" turn from an agent or an operator's manual /kill. This was a deliberate design choice, but it means every unlimited session created is a standing operational commitment: whoever holds the operator token has to remember it exists.

KEY_LEARNING_03

The room's development machine runs Python 3.14 (bleeding-edge at the time), and several dependencies hadn't yet published 3.14 wheels - a mismatch invisible until the first pip install failure. The fix was pinning each component (room/, agent-d/, contract/) to its own 3.11-3.12 virtualenv rather than assuming the system interpreter would work.

PythonFastAPIPostgreSQLMulti-Agent SystemsLocal LLMOllamaRailwayLong-Polling

SYSTEM.INT // 2026 LABS_CORE v2.108.0

LATENCY: STATUS: NOMINAL