Skip to content
View thangaram611's full-sized avatar

Block or report thangaram611

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
thangaram611/README.md
Thangaram Senthamaraikannan — Staff Software Engineer, platform and developer infrastructure. Career timeline: 2018 Kafka pipeline, 2019–20 Catalyst platform, 2023–24 Slate deploys, 2025–26 agent runtime.

Staff Software Engineer (Member Leadership Staff) · Zoho Corporation · Chennai, India
LinkedIn · thangaram611@gmail.com

Nine years, one company, spent almost entirely one layer beneath somebody else's product: a serverless platform from first commit to launch, the SDKs and CLI its users hold, the deployment platform that came after — and then a runtime that does the same job for agents instead of people.

Code I wrote, running in other people's builds

Most platform work sits behind a company's walls. This is the part anyone can audit.

Artifact Checked August 2026
zcatalyst-sdk-node 22,383 downloads/month · 56 releases since Mar 2019
zcatalyst-cli 9,163 downloads/month · 126 releases, v1.27.0
Catalyst Tools for VS Code ~2,700 installs · publisher Zoho Corporation

I authored the Node SDK and the CLI. They ship from a shared team publisher account, and counts move — the links are live.

Zoho Catalyst — one of two founding engineers

  • Before Catalyst, 2018. Sole engineer on Zoho CRM's per-organization FIFO event pipeline on Kafka, aggregating activity from Desk, Books and other products into CRM — peak 100,000 events/sec.
  • Jan 2019 to market launch in Mar 2020. A serverless platform in the Firebase category, built on Zoho's own global infrastructure. I wrote its Datastore, Filestore and Queue primitives.
  • Then its entire developer surface, personally: zcatalyst-cli, zcatalyst-sdk-node, a Java SDK, a Swift SDK, the VS Code extension, the Maven plugin. One contract expressed six ways — and the actual discipline is keeping the six from drifting apart. A public API contract is the one part of a platform you cannot quietly revise; that constraint still shapes how I design.
  • Three services after launch (2020–25) — Mail, a Lambda-equivalent Functions runtime, static web hosting — each exposed through the CLI, the SDKs and the public API on that same contract.
  • Slate (2023–24). I read the shift to Vercel-style hosting early, then designed and built Catalyst's first-party answer to it: git-driven builds, atomic deploys with rollback, CDN-backed delivery. Launched 2024, and I stood up the 6-engineer sub-team that owns and runs it today.
  • Today I direct the 13-engineer group that owns Catalyst and its developer tooling, grown from 3 over six years; I hired 7 of them personally.

Then the caller stopped being a person

Architect and primary author, 2025–26, of a multi-agent orchestration runtime at Zoho, behind an AI application builder. Same job as before — primitives and contracts for whoever is calling — except the caller is now a model. Most of the wins were measurement, not cleverness.

Agent runs that survive the process dying

An agent that spawns sub-agents is a distributed system with a nasty failure model: the process holding the tree in memory can die mid-tool-call, and the model has no memory of what it already asked for. Retry naively and you get duplicate work billed twice; don't retry and the tree stalls.

I designed it around one spawnAgent primitive over an arbitrary-depth, crash-recoverable task tree. Joins and cancellation are subtree-aware. Dispatch is idempotent by tool-call id: a spawned agent is recorded in the durable ledger before its work starts, so a crash is followed by a re-drive of the same task under the same id and the same agent row — not a duplicate.

77.7% of input tokens served from cache, found on the wire

The internal LLM gateway's prompt-caching contract was undocumented. I probed it with a 25-cell wire-probe suite — vary one field per cell, read what comes back on the wire — and traced the misses to a per-step volatile date block. After the fix, 77.7% of input tokens were served from cache.

The follow-on was a real trade, not a free win. Serving a curated fact glossary as a cache read instead of re-sending history cut fresh input tokens 99.6% on recall turns, at a measured +32% latency. A/B across the benchmark: win or tie in every scenario but one. I shipped it and named the exception.

The noise floor is 15–19%, so smaller deltas are not wins

The measurement gate is a headless end-to-end benchmark driving real conversations against a live stack, judged on a completion band plus a signed honesty dimension across three draws. The part that mattered was pointing it at itself: an A/A re-baseline put the noise floor at 15–19%, and below that, deltas are reported as unresolved rather than as wins. A benchmark that cannot tell you when it doesn't know is worse than no benchmark.

I also introduced the repository's first automated test suite — 221 files, ~2,333 cases on Vitest — and the CI that runs install, build, typecheck, lint and tests on every branch in about three minutes.

Two more decisions from the same runtime

Parallelism is a scheduling property, not a prompt. Controlled runs settled an argument: prompting alone never reliably gets a model to batch heavy tool calls. So I stopped asking — a fair scheduler with per-conversation stream caps, plus hard per-turn budgets on steps, output tokens and spawn depth, sized to run on 2-vCPU hosts. The budgets are the load-bearing half: bounding the worst turn is what makes a fair share mean anything.

An MCP tool gateway keeps the provider-facing tool surface byte-stable. Prompt caching dies on the first byte that moves.

Built on my own time

vigil · Rust · macOS · MIT — keeps a Mac awake while AI coding agents work, and only while they are actually working, releasing on idle, thermal pressure, or a battery floor while unplugged. It is structured around a privilege boundary: a root helper owns the single operation that genuinely needs escalation, so nothing else runs elevated. About 26K lines of Rust across a three-binary workspace, delivered as a seven-slice strangler-fig rewrite off Bash — each slice held to parity by golden-fixture oracles before the shell tree was deleted.

agent-companion · MIT — a runtime-neutral delegation bridge. Any supported coding-agent harness dispatches background work to Copilot, OpenCode or Codex through five MCP tools: agent_send, agent_wait, agent_status, agent_reply, agent_cancel. Sends resolve by strength (reviewer, web_researcher) rather than by vendor, so a harness never hard-codes a runtime. The plumbing was easy; the failure modes were not — an ACP daemon does pagination-aware loop detection with tiered silence thresholds, and the HTTP+SSE adapter supports in-flight reply and resume after a restart.

A self-hosted financial platform · private — an append-only double-entry ledger in exact integer paise, because floats have no business near money. Passkey/WebAuthn auth, a Postgres-backed job queue, verified nightly restic backups, and a deploy CLI that builds SHA-tagged images, gates on health and rolls itself back. One invariant holds the design together: the on-device LLM can never emit a monetary amount — enforced structurally by a server-side allow-list projection plus a deterministic crosscheck, never by asking the model nicely.


M.Tech, Networks and Security — BITS Pilani WILP, part-time while employed (2021–23) · B.Tech, Information Technology — College of Engineering Guindy, Anna University (2013–17)

Pinned Loading

  1. agent-companion agent-companion Public

    Runtime-neutral delegation bridge: dispatch background work to Copilot, OpenCode or Codex over MCP

    JavaScript 1 1

  2. vigil vigil Public

    Keeps your Mac awake while AI coding agents work — and only while they're working. Rust, macOS, privilege-separated.

    Rust 1