Sanjay Krishna Anbalagan
a portfolio in three acts: build · write · research
2026
Sr. Engineer  ·  AWS
PhD CS  ·  UMass Lowell

I make
complex systems
legible.

the chart narrates: recording structure, tracing your path, explaining why.

now: building four provenance journeys — backend execution · agent reasoning · application interaction · visual analysis · published at HCII 2026

I build software that records evidence as it runs — so people can understand what happened, challenge why it happened, and decide what to do next. Across backends, agents, applications, and analysis.

open to: speaking · advisory · collaborations

live evidence · footprint v1
understand · replay · challenge
every result → explainable · every path → preserved
$ cat ./manifesto.md § 01

AI systems are becoming more capable. The people using them still deserve to know what happened — and why.
Trust needs evidence.

A reliable system should not ask people to trust a story reconstructed afterward. It should preserve the real path as work happens: the information used, the choices made, the actions taken, and the causes behind the result.

Read the argument

I build provenance-native systems for human–agent software: products that create trustworthy evidence during execution and interaction instead of trying to infer it later.

The same evidence can help a person understand an outcome, an engineer debug a failure, an agent choose a safe next action, and an organization audit what occurred.

— Record the path at the moment it happens. Never reconstruct it afterward.

$ whoami --story § 02

The projects changed. The question did not.

My path moved from HCI and visual analytics, through state architecture and production engineering, into human–agent systems. At every stage I kept asking the same thing: how can complex software make its path understandable?

PhD  ·  HCI + visual analytics
What I was learning: making complex exploration understandable
The thread — how the work evolved

My HCI and visual-analytics work began at the interface: help people understand a complex exploration. StateTree moved the question underneath the interface: make the state transitions behind that experience inspectable, comparable, and reversible. Production engineering made the same need operational at scale.

That path now spans four journeys. FootPrint preserves backend execution. AgentFootprint preserves agent context and decisions. HACI Footprint makes application capabilities safe and legible to agents. VizFootprint preserves open-ended human and agent analysis.

The systems differ, but the design rule is the same: record trustworthy evidence while the path is happening, then give each person or agent the right lens to inspect it.

Read the full essay on Medium ↗

$ ls ./work/ § 03

Work — four journeys.

03 shipped · 01 pre-alpha · open source
In[1] — intent
No. 01 / Open source · npm

FootPrint ·

understand why a backend produced a result

TypeScript·★ 7·⑂ 2·v1
$ npm install footprintjs
Out[1] — artifact

Turn backend logic into a path people and agents can inspect. Rewind any output or state value to the reads, writes, branches, and routing decisions that produced it — without reconstructing the story from logs.

See what it enables
  • 7 flow patterns · transactional state · PII redaction
  • Auto-generated tool descriptions for agents
  • 6 modular libraries — memory · builder · scope · engine · runner · contract
  • Parallel fork/join · streaming · patch-based state
  • Time-travel replay across the entire execution graph

Read on GitHub ↗  ·  npm ↗

In[2] — intent
No. 02 / Open source · npm

agentfootprint ·

find the context that changed an answer

TypeScript·MIT·built on FootPrint
$ npm install agentfootprint
Out[2] — artifact

Debug why an agent failed instead of guessing from its final answer. Find the context that changed the result, narrow the suspects, remove one, replay the run, and confirm whether it caused the failure.

See what it enables
  • One mental model — 3 slots (system · messages · tools) × 4 triggers (always · rule · on-tool-return · llm-activated) × 1 Injection primitive. Every named pattern (Skills, RAG, Reflexion, ToT) reduces to this.
  • The trace is a cache of the agent's thinking — Causal Memory persists decision evidence as JSON, so audit answers, cheap-model follow-ups, and SFT/DPO training trajectories all read from one recording.
  • 2 primitives + 4 compositionsLLMCall, Agent; Sequence, Parallel, Conditional, Loop
  • 6 providers · MCP · 47 typed events across 13 domains — Anthropic · OpenAI · Bedrock · Ollama · Browser · Mock; pause/resume on a different server hours later via JSON-serializable checkpoints
  • Mocks first, prod second — build the entire agent against in-memory mocks at $0 API cost, swap one boundary at a time for production

Read on GitHub ↗  ·  npm ↗

In[3] — intent
No. 03 / Open source · npm

hcifootprint ·

make applications safely agent-operable

TypeScript·MIT·v0.2 · served over MCP
$ npm install hcifootprint
Out[3] — artifact

Give agents a typed map of an application's real capabilities while preserving permissions, preconditions, confirmation gates, and the signed-in user's control. Start read-only, then add actions when the product is ready.

See what it enables
  • Agent-computer interface (ACI) — a typed skill graph the agent plans over and acts on, calling the app's own handlers as the signed-in user
  • Served over MCP — any MCP client can drive the app; llms.txt shipped so agent consumers discover the surface
  • Read-only guide mode — the low-risk adoption rung; add write actions when you're ready
  • requiredStateKeys() projector API · 281 tests
  • Dress-shop demo — a vanilla e-commerce app becomes agent-operable in three commits

Read the docs ↗  ·  npm ↗  ·  37s demo ↗  ·  demo source ↗

In[4] — intent
No. 04 / Open source · pre-alpha

VizFootprint ·

preserve every human and agent analysis path

TypeScript·research system·pre-alpha
$ record the trail, not only the answer
Out[4] — artifact

Keep every human and agent branch of an exploration, including the paths that did not become the final story. Compare routes, replay findings, adopt useful branches, and preserve statistical obligations when the analysis changes direction.

See what it enables
  • Append-only, parent-linked trail — moving back and acting creates a branch without erasing the old future
  • Human and agent principals — every interaction carries its actor and cause
  • Named paths — compare, replay, adopt, archive, restore, and cite complete analysis journeys
  • Statistical memory — online-FDR obligations remain attached to the full history, including abandoned paths

Explore on GitHub ↗  ·  Read The Trail Pattern ↗

$ cat ./writing/*.md § 04

Writing — making the ideas useful.

Subscribe to the newsletter
$ cat ./research/*.bib § 05

Research — evidence behind the systems.

Two peer-reviewed steps toward trustworthy human–agent interaction
2025

Bridging UI Design and Chatbot Interactions

HCI International 2025 · Springer Proceedings
Read the abstract

A bridge between familiar interface behavior and conversational systems: helping people control whether an agent stays with the current task or deliberately switches focus.

2026

Visible Reasoning

Published · HCI International 2026 · LNCS 16745 · pp. 3–21 · Springer, Cham
Read the abstract

A framework for showing people recorded decision evidence rather than asking a model to narrate or judge its own reasoning. The research foundation for AgentFootprint.