Skip to content
View Rohit-ATS's full-sized avatar

Block or report Rohit-ATS

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
Rohit-ATS/README.md
Rohit Maruri - developer infrastructure. Computer Science at San Francisco Bay University. Graph databases, semantic caches, agent runtimes.



Email  ·  LinkedIn  ·  Blast Radius  ·  The stack


First-year CS student at San Francisco Bay University. I build things that actually ship — with tests, migrations, signed webhooks, and an answer for what happens when they break at 3 AM.

Most of my time goes to developer infrastructure. I'm drawn to the problems where the popular tool is the wrong shape for the question — where everyone reaches for a vector index and the question was never about similarity.

The throughline in all of it is the same: the shape of the data decides which questions you are allowed to ask. Blast Radius stores one graph twice because traversal speed and forensic precision want different shapes. The cache keys on meaning because an exact-match key never hits on LLM traffic. Meridian tracks tax lots individually because an average cost basis makes harvesting advice quietly wrong.

Choose that wrong and no amount of application code rescues it. Choose it right and the query everyone told you was expensive collapses into one hop.

The four projects drawn as one graph: shared technology is a shared node

Blast Radius

When an npm package is compromised, defenders have minutes to answer one question: who is actually exposed, right now?

Every AI dev tool shipping today indexes code as embeddings and retrieves by similarity. A transitive reverse-dependency closure is not a similarity problem — it is a graph traversal, five hops deep, over tens of millions of versioned nodes. Similarity cannot answer it. Not badly. At all.

So I built the thing that can.

A Blast Radius incident session: transitive exposure, semver resolution, a live OSV lookup, and the fix - each with the latency of the query that produced it
The question How it's answered
1 Who is transitively exposed? Everything that pulls it, five levels down. One variable-length traversal from a known vertex
2 Whose semver range would actually have pulled the poison? Declaring a dependency and resolving to the bad version are different facts. Every declared range, evaluated against the bad version
3 Is anything in my lockfile already malicious? Live against osv.dev — no crawl coverage required
4 How do I fix it? The safe version, an overrides block, a brief an agent can act on

The data model is the whole trick. Two layers in one graph: a collapsed Package-[:REQUIRES]->Package layer so traversal stays flat as depth grows, and a version-precise Release-[:DEPENDS_ON]->Package layer underneath so the forensic questions stay answerable. Traversal speed and forensic precision want different shapes — so I store both and let the planner pick.

Python · FastAPI · HydraDB (OpenCypher) · SQLite · Supabase · Docker · vanilla JS, zero build step
27k lines  ·  381 tests  ·  MIT  ·  built solo over a hackathon weekend for Hack Hydra


Also building

~11k lines · Electron + React

A proactive desktop coworker — it watches what you're working on and surfaces the right action before you ask. A five-tier memory hierarchy (RAM → SQLite → patterns → vector → long-term) instead of one vector DB. Native desktop control, an MCP tool layer, streaming voice, and connectors for Gmail, Slack, Notion, and GitHub.

~20k lines · Next.js 16 + React 19

An AI-native financial terminal — fifteen views, options priced with Black-Scholes, and tax lots tracked individually rather than by average basis. Market data is simulated, deliberately: it runs with no API key, and the feed swaps at one function.

~4.8k lines · Postgres + pgvector

Exact-match caches never hit on LLM traffic — nobody phrases it twice the same way. This one embeds each output and serves it when cosine similarity clears a threshold. Only SHA-256 key hashes stored, JS + Python SDKs, and a threat model in the repo.


The stack

Stack: Python, TypeScript, SQL and Cypher, Bash · HydraDB, PostgreSQL, pgvector, SQLite, Redis, Prisma · Claude API, MCP servers, Ollama, Whisper, embeddings · React 19, Next.js 16, Electron, Tailwind v4 · Docker, FastAPI, Render, Vercel, GitHub Actions

Activity

GitHub statistics: contributions, commits, pull requests, repositories, stars, followers, and the language mix
A snake eating a year of my contribution graph

Off the clock

Paris, 1858. Morphy is at the opera, playing two noblemen sharing a board. He gives away both rooks and the queen, and mates on move seventeen with the only two pieces he has left. It is the game people are shown to learn that development and tempo beat material — that what you have matters less than what it can reach.

Morphy's Opera Game of 1858, replayed move by move

How I build

Four rules I hold every project to. They're unglamorous, and they're where most of the real decisions end up.

No mocked data. Anywhere. Every number on every screen comes back from a query that was actually run — including empty states. A demo that lies is worse than no demo.

Measured, not claimed. Every panel in Blast Radius carries the latency of the query that produced it. If I say it's fast, there's a number next to the claim.

Secrets are a design problem, not a checklist item. From that repo's .gitignore, verbatim:

# Deliberately a glob: .env.production was not covered by the explicit list,
# which is the failure mode this pattern exists to prevent.

# SQLite side files, for every database this project grows. Listing each one by
# name has already failed once: the -shm and -wal here were git added first and
# ignored second, and .gitignore does not apply to anything already in the
# index, so they stayed staged and would have been committed.

Commits explain the change, not the diff. Answer the lockfile question from the lockfile. Keep the site up when its dependencies are not. You can read the history and know what happened.


Reach me

I'm a freshman, I move fast, and I'd rather build the hard version. If you're working on graph systems, agent infrastructure, or developer tooling — or you want someone who ships over a hackathon weekend and still writes the tests — I'd like to hear from you.

rohitmaruriats@gmail.com  ·  open to internships, hackathon teams, and OSS collaboration


Everything above is a link. The code is public and the tests are in the repo.

Pinned Loading

  1. blast-radius blast-radius Public

    npm supply-chain incident response over a graph database. Built on HydraDB for Hack Hydra.

    Python 2 1

  2. semantic-output-cache semantic-output-cache Public

    Provider-agnostic semantic cache for LLM output. Exact-match caches never hit on LLM traffic — nobody phrases it the same way twice. Embeds each output and serves it when cosine similarity clears a…

    TypeScript

  3. meridian meridian Public

    An AI-native financial terminal — fifteen views, options priced with Black-Scholes, and tax lots tracked individually rather than by average basis. Next.js 16 + React 19, Obsidian Terminal design s…

    TypeScript

  4. Vivedly-AI Vivedly-AI Public

    1

  5. Airlock Airlock Public

    Nothing reaches production without passing through the airlock. A change-control console where every irreversible production change is proven on a shadow copy in a sandbox before a human is ever as…

    TypeScript 1