I make LLM architectures from scratch, post-training RL systems, and autonomous agent infrastructure from first principles. Graduating from IIT Madras.
Experience:
- Independent Systems & ML Researcher. September 2024 – Present. Implementing frontier model architectures, test-time search, and RL alignment algorithms from scratch (World Models, GRPO, MoE, custom autograd, LoRA/DPO).
- AI Engineer at LOQO.AI. January 2024 – August 2024. Architected multi-modal video intelligence and automated narrative generation pipelines using Whisper, LangChain, and diffusion models. Reduced manual production turnaround by ~90%.
Education:
- Indian Institute of Technology, Madras (IIT Madras). 2023 – 2026 (Expected).
Open Source Contributions & Merged Pull Requests:
Total Merged Pull Requests: 65 across frontier AI agent runtimes, robotics foundation data pipelines, and developer tooling.
| Repository | PR | Description | Merged Date |
|---|---|---|---|
| RunanywhereAI/runanywhere-sdks | #1069 | fix: wire log level setters into commons logger across Kotlin, Flutter, RN, and Web (#1059) |
Nov 04, 2026 |
| RunanywhereAI/runanywhere-sdks | #1070 | fix(jni): validate cached refs and method ids across registration paths (#1044) |
Nov 03, 2026 |
| RunanywhereAI/runanywhere-sdks | #1068 | fix(commons): check allocations in remaining proto adapters (#1061) |
Nov 03, 2026 |
| Hebbian-Robotics/hflow | #744 | fix(lerobot): preserve AUD start codes when transcoding video (#743) |
Oct 29, 2026 |
| Hebbian-Robotics/hflow | #734 | fix(measurements): align rgb_frames sampling with output ticks (#733) |
Oct 28, 2026 |
| Laimos-code/lore-company-brain | #3 | feat(agent): implement graph agent with tool calling, citation normalization, and evidence map |
Oct 18, 2026 |
| Laimos-code/lore-company-brain | #1 | feat(server): FastAPI backend, tool contract, rate limiting, docker-compose, and web UI |
Oct 17, 2026 |
| RunanywhereAI/runanywhere-sdks | #1055 | refactor(web): replace duplicate AsyncQueue with @runanywhere/proto-ts push queue (#856) |
Oct 15, 2026 |
| RunanywhereAI/runanywhere-sdks | #1051 | test(web): add failure-path test for CrossWasmRAGProvider.ragQueryStream (#1037) |
Oct 15, 2026 |
| RunanywhereAI/runanywhere-sdks | #963 | fix(swift): decouple AVAudioPlayerDelegate into extension with noniso… |
Oct 13, 2026 |
| RunanywhereAI/runanywhere-sdks | #989 | fix(mlx): filter MLX runtime debug and info logs by SDK log level (#984) |
Oct 13, 2026 |
| Hebbian-Robotics/hflow | #719 | fix(checks): guard ZeroDivisionError on non-advancing camera clocks (#717) |
Oct 13, 2026 |
| Hebbian-Robotics/hflow | #716 | fix(checks): reject backward trajectory timestamps against accepted history (#714) |
Oct 11, 2026 |
| caura-ai/caura | #1698 | fix(events): type pull_executor concretely in _hold_leases (#1596) |
Oct 11, 2026 |
| HarnessRouter/harnessrouter | #443 | fix(runner): resolve hermes provider to anthropic for custom Messages connections (closes #374) |
Oct 10, 2026 |
| Hebbian-Robotics/hflow | #713 | fix(checks): normalize interval bounds in _mask_run_intervals for non-monotonic streams |
Oct 10, 2026 |
| preloop/preloop | #1116 | feat(tools): rename search to search_issues and trim search_sessions schema (Closes #1044) |
Oct 09, 2026 |
| Hebbian-Robotics/hflow | #705 | fix(curation): draw tags_latest and intervals_latest from each check's latest run |
Oct 07, 2026 |
| trycua/cua | #3911 | fix(lume): shell-escape remote command arguments in lume ssh (#3879) |
Oct 07, 2026 |
| Hebbian-Robotics/hflow | #701 | fix(checks): duration-weight final_pose_speed and retain on sparse streams |
Oct 07, 2026 |
| Hebbian-Robotics/hflow | #697 | fix(server): retain latest check intervals and tags across multi-stage appends (#696) |
Oct 07, 2026 |
| Hebbian-Robotics/hflow | #695 | fix(checks): skip empty state streams in timestamp sync offsets (#691) |
Oct 06, 2026 |
| Hebbian-Robotics/hflow | #692 | feat(planning): granular step-level execution planning for Stage.META |
Oct 06, 2026 |
| Hebbian-Robotics/hflow | #686 | fix(meta): preserve prior quarantine when critical check errors on full run (#680) |
Oct 04, 2026 |
| Hebbian-Robotics/hflow | #679 | fix(stage_execution): exclude failed sync sources from post-sync planning (#675) |
Oct 04, 2026 |
| Osmosis-AI/osmosis-sdk-python | #410 | [rollout][server] fix: resolve rollout future on execution task crash |
Oct 04, 2026 |
| Hebbian-Robotics/hflow | #673 | fix(reader): avoid full scan on empty selection or unknown channels (#669) |
Oct 03, 2026 |
| robocurve/inspect-robots | #525 | fix(task): reject duplicate scorer names and support custom scorer names (#480) |
Oct 03, 2026 |
| Hebbian-Robotics/hflow | #666 | fix(checks): check message count before to_numpy in motion profiles (#665) |
Oct 03, 2026 |
| robocurve/inspect-robots | #520 | fix(eval): isolate LogSink exceptions in _Broadcast fan-out (#511) |
Oct 03, 2026 |
| robocurve/inspect-robots | #504 | fix(logging): normalize NumPy integer and Boolean scalars in JSON logs |
Oct 03, 2026 |
| robocurve/inspect-robots | #509 | fix(video): clean up subprocess and partial output on escaping exceptions (#508) |
Oct 03, 2026 |
| Hebbian-Robotics/hflow | #664 | fix(episode): allow null elements in numeric list columns in to_arrow (#662) |
Oct 03, 2026 |
| Hebbian-Robotics/hflow | #663 | fix(stage_planning): read check_runs_latest to plan retries for errored checks (#659) |
Oct 02, 2026 |
| RunanywhereAI/runanywhere-sdks | #952 | docs(core,swift): propagate UTF-8 text-run streaming docstrings acros… |
Oct 02, 2026 |
| Hebbian-Robotics/hflow | #648 | fix(examples/lerobot): support multi-task datasets and global task indices (#632) |
Oct 02, 2026 |
| Hebbian-Robotics/hflow | #646 | fix(stage_execution): query file sizes concurrently in plan_stage_batches (#643) |
Oct 01, 2026 |
| Hebbian-Robotics/hflow | #644 | fix(episode): handle empty channels in ChannelData.to_arrow (#631) |
Oct 01, 2026 |
| AssemblyAI/assemblyai-python-sdk | #255 | fix(streaming): add non-negative validation constraints to RealTimeTr… |
Sep 29, 2026 |
| doobidoo/mcp-memory-service | #1362 | fix(health): surface missing embeddings in health checks and audit repair script (Refs #1225) |
Sep 28, 2026 |
| trycua/cua | #4229 | fix(cua-driver): drop the boolean enum from verify_state for Gemini clients |
Sep 28, 2026 |
| orbi-build/orbi | #1419 | fix(github): treat plan-limit 403 on rulesets as empty rulesets (#1361) |
Sep 27, 2026 |
| Hebbian-Robotics/hflow | #626 | fix(episode): select filter flag by FFmpeg version to support FFmpeg … |
Sep 25, 2026 |
| Hebbian-Robotics/hflow | #625 | fix(importers/lerobot): refuse unsupported storage_format (#624) |
Sep 25, 2026 |
| Hebbian-Robotics/hflow | #621 | fix(doctor): report missing channels in chunk indexes instead of crashing (#620) |
Sep 24, 2026 |
| ColinGPT9/clips-studio | #104 | fix(pipeline): persist recovered metadata to db on cached downloads a… |
Sep 24, 2026 |
| orbi-build/orbi | #1330 | fix(#1320): stagger runner timer instances with deterministic offsets |
Sep 24, 2026 |
| agentclientprotocol/claude-agent-acp | #1173 | fix: announce resumed subagent generations when they start |
Sep 24, 2026 |
| orbi-build/orbi | #1327 | fix(runner): serialize issue claim and slot delivery identity with cl… |
Sep 24, 2026 |
| agentconnect-md/agentconnect | #2381 | fix(daemon): apply configured agent model to memory dream extraction … |
Sep 24, 2026 |
| preloop/preloop | #880 | fix(flows): preserve full command result payload on terminal mark |
Sep 24, 2026 |
| truera/trulens | #2809 | fix(core): make delete_singleton match the stored key and disable OTEL exporters |
Sep 23, 2026 |
| Hebbian-Robotics/hflow | #614 | fix(prefetch): handle concurrent aclose, error recovery, and director… |
Sep 23, 2026 |
| Hebbian-Robotics/hflow | #606 | feat(cache): use platformdirs as single owner of user cache paths (#585) |
Sep 23, 2026 |
| Hebbian-Robotics/hflow | #592 | feat(examples/egocentric): add WebDataset tar converter with metadata… |
Sep 22, 2026 |
| huggingface/Repo2RLEnv | #137 | fix(reward): ignore git extended headers and mode lines in diff norma… |
Sep 22, 2026 |
| Hebbian-Robotics/hflow | #589 | fix(storage): expose object-store mirror refresh activity with bounde… |
Sep 22, 2026 |
| trycua/cua | #4019 | fix(cua-driver): report daemon_running accurately from socket liveness |
Sep 22, 2026 |
| AssemblyAI/assemblyai-node-sdk | #186 | fix(realtime): reject connect() promise when WebSocket errors before … |
Sep 21, 2026 |
| preloop/preloop | #820 | fix(mcp): recover database failures and sanitize tool errors |
Sep 19, 2026 |
| Hebbian-Robotics/hflow | #572 | feat(build-ai): migrate evaluation CLI from argparse to Typer (#566) |
Sep 19, 2026 |
| preloop/preloop | #808 | fix(cli): one OAuth lineage per Codex CLI enrollment (#799) |
Sep 19, 2026 |
| preloop/preloop | #796 | fix(ask_user): drop unsupported item keys and validate schema item re… |
Sep 18, 2026 |
| Hebbian-Robotics/hflow | #559 | fix(lerobot): refuse task_index referencing unpublished tasks before … |
Sep 18, 2026 |
| uselemma/lemma | #81 | fix(tracing): detect success: false and status: error tool failure pa… |
Sep 15, 2026 |
World Models:
- dreamer4-coinrun : Trained a 1.57B-parameter action-conditioned world model with flow matching + shortcut forcing on 9.6M self-generated CoinRun frames on an H200 (PSNR 40.41, beating GenieRedux baselines). Debugged and fixed 5 upstream bugs in the original codebase that prevented environment rollouts.
- world-model-from-scratch : Implementation of Ha & Schmidhuber (2018) World Models. Trains a VAE visual compressor and MDN-RNN memory network (~167k parameters) to learn environment dynamics from raw pixels and simulate game rollouts entirely within hallucinated latent dreams.
LLMs from Scratch:
- llm-lite : Complete, zero-dependency transformer stack in pure PyTorch/NumPy. 8 stages built from scratch: custom BPE tokenizer, autograd engine, AdamW optimizer, RoPE + Multi-Head Attention + KV-Cache, pre-training, SFT, LoRA, and INT4 quantization with comprehensive test coverage.
- nano-gpt-oss : Transformer framework outperforming the GPT-2 baseline across 18 ablation configurations. Features gated Mixture-of-Experts (MoE) routing, SwiGLU activations, Grouped-Query Attention (GQA), and Sliding Window Attention with sink tokens.
- DeepSeek-From-Scratch : Ground-up PyTorch implementation of DeepSeek architecture innovations, including Multi-Head Latent Attention (MLA) with decoupled RoPE compression and DeepSeekMoE fine-grained sparse expert routing.
Post-Training & RL:
- mercor-grpo-agent : Empirical reproduction and critique of Mercor's RL post-training setup vs. standard DeepSeek GRPO on SWE-bench. Investigated length hacking, token entropy regularization, and dynamic DPPO prefix-masking with an interactive benchmark runner.
- swe-in-prod : From-scratch implementation of Group Relative Policy Optimization (GRPO, DeepSeek-R1) for agentic reasoning and code synthesis. Built the actor-environment-reward loop, advantage normalization without a critic network, and LoRA policy optimization on real SWE-bench tasks.
- Reasoning-for-LLMs : Test-time compute scaling, Chain-of-Thought (CoT) search algorithms, and Process Reward Models (PRM) with guided beam search across multi-step mathematical and algorithmic reasoning benchmarks.
Agents in Production:
- Slack-ClawdBot : Production TypeScript agent infrastructure integrating semantic RAG over historical chat threads, persistent memory using mem0, Model Context Protocol (MCP) clients for GitHub & Notion, and 59 custom tool executions. Docker-deployed.
- Vizuara-Agents-10Day-Bootcamp : Multi-agent orchestration architectures spanning LangGraph, CrewAI, and Smolagents for automated code review desks, CI log triage, and deterministic tool-calling workflows.
Technical Focus:
- PyTorch, NumPy, CUDA, Custom Autograd, Flow Matching, World Models
- GRPO, PPO, DPO, Process Reward Models (PRM), LoRA / PEFT, Test-Time Search
- Model Context Protocol (MCP), TypeScript, LangGraph, RAG, Modal GPU Infra, Docker
Contact:
- Email: shobhitagnihotri416@gmail.com
- Portfolio: shobhitagnihotri69.github.io
- GitHub: shobhitagnihotri69


