fix: docker container restart loop — restart policy set to "no"feat: intelligent rate limiting — default delay 2s→5s, 12 req/minfix: chromedriver version mismatch — use system driver from aptfeat: per-minute request counter with exponential backoff on 429sdocs: model corrected — gemini-2.5-flash-lite, not profeat: section-count optimization, 9–15 by project sizefeat: max 8 screenshots with priority selection, max 3 diagramsfeat: auto-numbered TOC with hierarchical section listingfix: mermaid prompts capped — 5-7 nodes max, <500 charsfeat: redis distributed lock + SELECT FOR UPDATE + version checkfeat: immutable JSONB audit log — field diffs, actor id, client ipfeat: sliding-window lua rate limiting, 100 req/min per ipfeat: batch creation of 50 events in one atomic round-tripfeat: jwt hs256 rbac — user reads, admin writeschore: multi-stage docker build, ~15MB final imagefeat: versioned sql migrations auto-applied at startupdocs: browser deps clarified — selenium screenshots, puppeteer only in mmdcfeat: cancellation restores ticket inventoryfeat: zerolog structured json — pretty in dev, compact in prodfix: api rate limit violations during large doc generationfeat: hyperlink support — automatic url detection in generated docsfeat: ast-based retrieval over claude skill libraryfeat: human-gated approval loop for skill distillationfeat: contributors metadata via environment variablesfix: screenshot failures in containerized environmentdocs: readme rewrite that corrected its own claimsfeat: content generation optimization — reduce calls, don't pace themfeat: intersectionobserver nav + counters, print stylesheetchore: zero dependencies, design tokens in :rootfeat: byok model — no server-side key custodyfix: docker container restart loop — restart policy set to "no"feat: intelligent rate limiting — default delay 2s→5s, 12 req/minfix: chromedriver version mismatch — use system driver from aptfeat: per-minute request counter with exponential backoff on 429sdocs: model corrected — gemini-2.5-flash-lite, not profeat: section-count optimization, 9–15 by project sizefeat: max 8 screenshots with priority selection, max 3 diagramsfeat: auto-numbered TOC with hierarchical section listingfix: mermaid prompts capped — 5-7 nodes max, <500 charsfeat: redis distributed lock + SELECT FOR UPDATE + version checkfeat: immutable JSONB audit log — field diffs, actor id, client ipfeat: sliding-window lua rate limiting, 100 req/min per ipfeat: batch creation of 50 events in one atomic round-tripfeat: jwt hs256 rbac — user reads, admin writeschore: multi-stage docker build, ~15MB final imagefeat: versioned sql migrations auto-applied at startupdocs: browser deps clarified — selenium screenshots, puppeteer only in mmdcfeat: cancellation restores ticket inventoryfeat: zerolog structured json — pretty in dev, compact in prodfix: api rate limit violations during large doc generationfeat: hyperlink support — automatic url detection in generated docsfeat: ast-based retrieval over claude skill libraryfeat: human-gated approval loop for skill distillationfeat: contributors metadata via environment variablesfix: screenshot failures in containerized environmentdocs: readme rewrite that corrected its own claimsfeat: content generation optimization — reduce calls, don't pace themfeat: intersectionobserver nav + counters, print stylesheetchore: zero dependencies, design tokens in :rootfeat: byok model — no server-side key custody
> I ship production backends — Go and FastAPI under real rate limits, migrations with zero downtime. Now I work where agents meet real users: I build what they can't finish, and I'm the one who answers when it breaks — because that's where the engineering actually is.
ishan@prod:~$
ishan@prod:~$ uptime --career
# On the clock — Production backends at Rayvector; agent reliability at Emergent.
Emergentaug 2026 → present
Agents write the first version. I make it survive contact with real customers — and answer for it when it doesn't.
AI Agent Reliability — support and engineering
·full-stack builds on the Emergent platform
·bug fixes across Emergent's own app + client apps
·Kubernetes · Grafana · Redash · PostHog
Rayvectormay 2025 → jul 2026
Production backends for a multinational client — and the zero-downtime migration underneath them.
# Where I'm digging — Agent loops, memory, retrieval, evals — off prod, on purpose.
Agent boxes
Hermes & OpenClaw, self-hosted on a Hostinger VPS, kept alive to watch where production-grade agent loops degrade: tool-loop convergence, memory bleed across runs, behavior under sustained load. Notes feed back into SkillForge.
Harness engineering
Wiring guardrails and evals into the LLM workflow, not bolting them on after. Open question: pre-tool, post-tool, or a separate critic agent?
Memory
mem0 (episodic, vector-backed) vs SkillForge (procedural, AST-indexed): two halves of the same problem.
Retrieval
PageIndex and tree-structured retrieval; moving past vector-only RAG.
ishan@prod:~$ cd ~ && open .
# Go deeper — The full index, the git log, and a way to reach me.
🤖 [Building]Rasputin_Loop: a Slack-native agent, one brain, no router
A single Strands agent loop (MiniMax M3) that thinks, calls a tool, and replies in-thread -> no intent parser, no command router. Provenance-stamped episodic memory in SQLite, hybrid RAG over libSQL/Turso fusing FTS5 + local embeddings via Reciprocal Rank Fusion, runtime MCP tools, Jira auto-triage, guardrails, and a `loop-eval` golden-set CI gate. Runs several distinct Slack apps from one process. Repo: github.com/Allmight-456/Rasputin_Loop.
Self-hosted long-running agent boxes, kept alive specifically to watch where production-grade agent loops degrade. Tool-loop convergence, memory bleed across runs, where they crack under sustained load. Operational notes feed back into SkillForge.
Wiring them *into* the LLM workflow itself, not bolted on after. The open question: where do evals belong -> pre-tool, post-tool, or as a separate critic agent?
🧠 [Agent memory]mem0 vs SkillForge
mem0 for long-horizon memory. Mapping the gap between mem0 (episodic, vector-backed) and SkillForge (procedural, AST-indexed) -> different halves of the same problem.