Ashray
Adhikari

Software Engineer Munich, Germany github.com/ashray-00

Five years as sole engineer on a real-time vehicle data platform for BMW — full ownership, AUTOSAR protocol stacks, zero data drops across endurance drives. In parallel: a PyPI-published C++ hybrid search library, a prompt-injection detection cascade, a from-scratch LLM inference server, a live production RAG application. The work spans real-time systems constraints and transformer fine-tuning.

adhikariashray@gmail.com

Work

Oct 2021
– Present
Luxoft
Munich
Software Engineer
Vehicle State Monitor (VSM) · BMW · sole engineer & lead developer

Designed and built a C++17/gRPC real-time streaming platform spanning the full AUTOSAR protocol stack — CAN, SOME/IP, DLT, IPC, Ethernet. Zero data drops across multi-day BMW endurance drives as the only engineer responsible from architecture to delivery.

Re-architected a legacy ROS tool to a cross-platform gRPC service. MTBF raised from ~1 hour to continuous multi-day operation. Dedicated server channels per message type prevent signal starvation under peak bus load. Per-bus-type multi-threaded frame-reassembly with ring buffers, mutexes, and lock-free atomics for bounded heap growth and predictable latency.

Fan-out streaming architecture with pub/sub and polling interfaces — enabled self-serve adoption by external BMW engineering teams and post-drive signal replay. Multithreaded Qt GUI for real-time camera visualization, live throughput metrics, and direct ECU parameter modification.

C++17 · gRPC/Protobuf · Qt5/6 · AUTOSAR · CAN · SOME/IP · DLT · IPC · Python · Linux
Jun 2020
– Aug 2021
Cellumation GmbH
Bremen
Working Student Software Engineer
Celluveyor robotic warehouse system

Led a small team to ship a Qt HMI with joystick control and automatic cell-overlap detection, and an InfluxDB-backed throughput analytics dashboard for the Celluveyor robotic warehouse conveyor, replacing a legacy calibration tool.

C++ · Qt · Python · React · Vue.js · InfluxDB · ROS · Docker

Projects

sqlite-hybrid-search

In-process C++17 library that fuses dense HNSW vector search (usearch) and BM25 full-text retrieval (SQLite FTS5) via Reciprocal Rank Fusion with per-chunk exponential recency decay. Single-writer/concurrent-reader WAL concurrency, no external locking. Pimpl public API. nanobind Python bindings with prebuilt wheels for Linux x86-64 and macOS Apple Silicon.

Cold-start time cut from 14.6 seconds to ~40ms by persisting the HNSW graph to disk. The whole retrieval stack fits in-process — no network hop, no separate service.

sub-0.2ms dense p50 latency
at 100k documents
moat

SEC 10-K/10-Q RAG application. In production, with Stripe billing and real users. Not a demo.

pgvector dense retrieval + Postgres FTS via RRF. Cohere/CrossEncoder reranking. LangGraph agent with XBRL financial fact tools. HITL review gates. Langfuse observability throughout.

moat-blond.vercel.app ↗
Python · FastAPI · LangGraph · Next.js · Supabase/pgvector · LiteLLM · Stripe · Langfuse
LangGraph for the agent loop — explicit state graph rather than framework magic, every branching decision legible and testable
RRF over pure dense search because financial filings have both precise entity names (dense-friendly) and long analytical passages (BM25-friendly)
HITL gates at the reranking stage because hallucinated financial figures have real consequences

Full-stack web presence for NFT Munich football club — a real sports club with fixtures, squads, and club management needs. Sole developer across design, implementation, and production deployment.

CMS-backed so the club can update fixtures, news, and squad pages without touching code. Live in production at nftmunch.club.

Next.js · TypeScript · Tailwind CSS · Headless CMS · Vercel
Headless CMS so non-technical club staff can publish match results and news independently — the admin interface was part of the deliverable
Sole developer on a real client project: design direction, component system, CMS schema, and deployment all owned end-to-end
Static generation for content pages, server rendering for dynamic fixtures — keeps the club's page fast without a backend team to maintain it
mlscan

Static ML supply-chain scanner. Simulates the pickle VM stack and memo to recover imports hidden through multi-step opcode chains — without executing any input. Zero external dependencies.

Formats
safetensors · GGUF · HDF5 · ONNX · Keras
Detects
Jinja2 sandbox escapes · Zip Slip · shadow weights
Typosquat engine
NFKC + homoglyph map + casefolding
Output
SARIF · CycloneDX ML-BOM
Performance
Parallel 8-thread scanning
Dependencies
None. Python stdlib only.
ragaudit

Three-tier adversarial evaluation platform for LLM and RAG systems. Next.js frontend, Python FastAPI backend, Go worker orchestrating Docker sandboxes for isolated tool execution. Maps findings to OWASP LLM Top 10 2025.

Per-tool HITL approval gates with three decisions — allow, deny, or allow-with-network-access. Strict sandbox mode fails closed if the worker is unavailable; enterprise profile disallows auto-approve entirely. Each finding captures the complete exchange: prompts, multi-turn history, tool calls, raw outputs.

Execution modes
Internal agent · external HTTP API · mock provider
Model providers
Ollama · OpenAI · Anthropic · Groq · Azure · Gemini
Export
JSON · SARIF · PDF · HTML
Coverage
OWASP LLM Top 10 2025
Stack
Next.js · TypeScript · Python 3.12 · FastAPI · Go · Docker · PostgreSQL · Redis
Secrets
Vault key_ref abstraction — never logged or transmitted in plaintext
Atlas-Workbench

Multi-tenant AI workspace platform. Five specialized agents behind a single interface, plus a sandboxed developer environment with a real terminal and git integration — isolated per-user containers, not a shared shell.

Research agent
Web search · source synthesis · citation tracking
Doc Q&A agent
Uploaded document retrieval with inline source citations
SQL agent
Natural-language to SQL with schema introspection
Code review agent
Diff-aware analysis, security checks, style feedback
Dev assistant
Terminal access + git in per-user sandboxed container
Infrastructure
Docker Compose · Kubernetes · multi-tenant isolation
dossier-agent
01async Celery ingestion
02AstraDB dense + BM25 hybrid retrieval
03dynamic routing (docs ↔ web search)
04RAGAS evaluation
05SSE streaming response

5-stage LangGraph pipeline that routes dynamically across uploaded documents and live web search depending on query type. AstraDB provides dense vector retrieval; BM25 covers exact-match queries that embeddings tend to miss.

RAGAS evaluation pipeline runs continuously — faithfulness, answer relevance, and context precision tracked per query. SSE streaming so responses feel immediate even on long retrievals.

injection-guard
01normalization fan-out
0217-signal heuristic family
03MiniLM-L6 embedding-margin
04DeBERTa-v3-small + Platt cal.
05output & canary checks
ROC-AUC 0.9978
PR-AUC 0.9965
97.2% recall @ 1% FPR

Prompt-injection detection cascade. Each tier is an independent classifier — the cascade exits early on high-confidence decisions. 88% cache hit rate compresses average latency to 2.73ms/chunk (p95 46.9ms).

Trained on 2,100 examples spanning 9 attack classes across 11+ languages — payload splitting, indirect injection, obfuscation. Group-split evaluation prevents leakage between attack variants. Test set n=848.

llm-serving-from-scratch

LLM inference server study on Qwen2.5-1.5B-Instruct running on Apple Silicon MPS. Four serving architectures implemented in sequence to isolate the contribution of each decision. Fused PagedAttention kernels deliberately excluded so each architectural effect is independently measurable.

naive single-lock static batching continuous batching paged KV + prefix cache
+39% throughput (10.86 → 15.10 tok/s) −36% p50 latency (93.6 → 60.0s)
llm-redteam-harness

Adversarial testing framework for LLMs. 13 techniques × 6 payloads factorial design, 30 trials per cell, 2,700 total attempts against llama3.2:3b. Three-judge ensemble: exact canary match (κ=1.00), LLM judge (κ=0.62), regex (κ=0.38). Wilson score intervals throughout — per-payload analysis, no pooling that would mask payload-specific effects. Benign control arm catches refuse-everything models.

Technique ASR Finding
format_smuggle 100% Dropped to 43% with benign preamble — phrasing substantially affects measured ASR
roleplay_dual_channel 90%
fiction_scene 51%
authority_developer 50%
structured output (JSON schema) 100% Bypassed policy entirely — discovered post-study, not in original 13

Ashray Adhikari

Location Munich, Germany
Education B.Sc. Computer Science — Jacobs University Bremen, 2021