I build AI agents and products that are rigorously tested for correctness and safety.
My work covers the full stack of modern AI, from model internals and retrieval to agents and evaluation. I use whichever language fits the problem best, including Python, Go, Rust and TypeScript. Every project ships with passing CI, a versioned release, measured benchmarks and recorded demos, and wherever an established library exists, results are checked against it.
Languages and tools used in these repositories. Libraries marked reference are what my implementations are validated against, not what they are built on.
Languages
AI and machine learning
Systems and data
Quality
Delivery
Pick what you want to see. Colors group projects by the stage of the stack they live in, and the same colors are used in every diagram on this page. Flagships are in bold.
%%{init: {"flowchart": {"wrappingWidth": 320}}}%%
flowchart TD
n_root(["What do you want to explore?"])
subgraph s_model["Modeling and training"]
n_model["• <b>transformer-from-scratch</b><br/>• <b>bpe-tokenizer-library</b><br/>• <b>corpus-dedup-library</b><br/>• cnn-from-scratch<br/>• neural-word-embeddings<br/>• crf-sequence-labeler<br/>• dependency-parser<br/>• statistical-translation<br/>• topic-model-lda"]
end
n_root --> s_model
subgraph s_retr["Retrieval and search"]
n_retr["• <b>ann-vector-search-library</b><br/>• <b>hybrid-rag</b><br/>• graphrag<br/>• agentic-rag<br/>• grounded-copilot"]
end
n_root --> s_retr
subgraph s_align["Alignment and post-training"]
n_align["• <b>rlhf-reward-model</b><br/>• preference-optimization<br/>• self-improvement-loop<br/>• prompt-optimizer"]
end
n_root --> s_align
subgraph s_serve["Serving and reliability"]
n_serve["• <b>llm-gateway</b><br/>• <b>constrained-generation-library</b>"]
end
n_root --> s_serve
subgraph s_agent["Agents"]
n_agent["• <b>react-agent</b><br/>• <b>multi-agent-orchestrator</b><br/>• <b>agent-platform</b><br/>• agent-memory<br/>• nl-sql-analyst<br/>• ai-code-reviewer<br/>• agent-sandbox"]
end
n_root --> s_agent
subgraph s_trust["Evaluation and trust"]
n_trust["• <b>evaluation-harness</b><br/>• <b>training-provenance</b><br/>• llm-observability<br/>• factuality-auditor<br/>• red-teaming<br/>• llm-eval-action"]
end
n_root --> s_trust
subgraph s_sys["Systems and tooling"]
n_sys["• <b>vectordb-go</b><br/>• mcp-ml-tools<br/>• sweep-orchestrator<br/>• hyperparameter-optimizer<br/>• profile-forge<br/>• homebrew-tap"]
end
n_root --> s_sys
classDef c_root fill:#1f2937,stroke:#111827,color:#f9fafb;
classDef c_model fill:#dbeafe,stroke-width:0px,color:#0b1b3a,text-align:left;
classDef c_retr fill:#dcfce7,stroke-width:0px,color:#052e16,text-align:left;
classDef c_align fill:#ede9fe,stroke-width:0px,color:#1e1b4b,text-align:left;
classDef c_serve fill:#fef3c7,stroke-width:0px,color:#451a03,text-align:left;
classDef c_agent fill:#fae8ff,stroke-width:0px,color:#4a044e,text-align:left;
classDef c_trust fill:#fee2e2,stroke-width:0px,color:#450a0a,text-align:left;
classDef c_sys fill:#ccfbf1,stroke-width:0px,color:#042f2e,text-align:left;
class n_root c_root;
class n_model c_model;
style s_model fill:#dbeafe,stroke:#1d4ed8,color:#0b1b3a
class n_retr c_retr;
style s_retr fill:#dcfce7,stroke:#15803d,color:#052e16
class n_align c_align;
style s_align fill:#ede9fe,stroke:#6d28d9,color:#1e1b4b
class n_serve c_serve;
style s_serve fill:#fef3c7,stroke:#b45309,color:#451a03
class n_agent c_agent;
style s_agent fill:#fae8ff,stroke:#a21caf,color:#4a044e
class n_trust c_trust;
style s_trust fill:#fee2e2,stroke:#b91c1c,color:#450a0a
class n_sys c_sys;
style s_sys fill:#ccfbf1,stroke:#0f766e,color:#042f2e
Legend
The projects compose into one pipeline: data is tokenized and deduplicated, models are trained and aligned, results are retrieved and served, agents act on them, and everything is evaluated, traced, and reproducible. Dotted arrows are cross-cutting relationships. Colors match the legend.
%%{init: {"flowchart": {"wrappingWidth": 320}}}%%
flowchart LR
r_bpe_tokenizer_library["bpe-tokenizer-library"]
r_transformer_from_scratch["transformer-from-scratch"]
r_corpus_dedup_library["corpus-dedup-library"]
r_rlhf_reward_model["rlhf-reward-model"]
r_preference_optimization["preference-optimization"]
r_ann_vector_search_library["ann-vector-search-library"]
r_hybrid_rag["hybrid-rag"]
r_vectordb_go["vectordb-go"]
r_llm_gateway["llm-gateway"]
r_constrained_generation_library["constrained-generation-library"]
r_react_agent["react-agent"]
r_multi_agent_orchestrator["multi-agent-orchestrator"]
r_agent_platform["agent-platform"]
r_evaluation_harness["evaluation-harness"]
r_llm_observability["llm-observability"]
r_training_provenance["training-provenance"]
r_agent_memory["agent-memory"]
r_agent_sandbox["agent-sandbox"]
r_llm_eval_action["llm-eval-action"]
r_bpe_tokenizer_library --> r_transformer_from_scratch
r_corpus_dedup_library --> r_transformer_from_scratch
r_transformer_from_scratch --> r_rlhf_reward_model
r_rlhf_reward_model --> r_preference_optimization
r_ann_vector_search_library --> r_hybrid_rag
r_ann_vector_search_library -->|ported to Go| r_vectordb_go
r_hybrid_rag --> r_llm_gateway
r_constrained_generation_library --> r_llm_gateway
r_llm_gateway --> r_react_agent
r_hybrid_rag --> r_react_agent
r_react_agent --> r_multi_agent_orchestrator
r_multi_agent_orchestrator --> r_agent_platform
r_evaluation_harness -.->|scores| r_rlhf_reward_model
r_evaluation_harness -.->|scores| r_hybrid_rag
r_evaluation_harness -.->|scores| r_react_agent
r_llm_observability -.->|traces| r_llm_gateway
r_llm_observability -.->|traces| r_multi_agent_orchestrator
r_training_provenance -.->|reproduces| r_transformer_from_scratch
r_agent_memory --> r_agent_platform
r_agent_sandbox -.->|guards tools| r_react_agent
r_evaluation_harness -.->|gates PRs| r_llm_eval_action
classDef c_model fill:#dbeafe,stroke:#1d4ed8,color:#0b1b3a;
classDef c_retr fill:#dcfce7,stroke:#15803d,color:#052e16;
classDef c_align fill:#ede9fe,stroke:#6d28d9,color:#1e1b4b;
classDef c_serve fill:#fef3c7,stroke:#b45309,color:#451a03;
classDef c_agent fill:#fae8ff,stroke:#a21caf,color:#4a044e;
classDef c_trust fill:#fee2e2,stroke:#b91c1c,color:#450a0a;
classDef c_sys fill:#ccfbf1,stroke:#0f766e,color:#042f2e;
class r_bpe_tokenizer_library,r_transformer_from_scratch,r_corpus_dedup_library c_model;
class r_ann_vector_search_library,r_hybrid_rag c_retr;
class r_rlhf_reward_model,r_preference_optimization c_align;
class r_llm_gateway,r_constrained_generation_library c_serve;
class r_react_agent,r_multi_agent_orchestrator,r_agent_platform,r_agent_memory,r_agent_sandbox c_agent;
class r_evaluation_harness,r_llm_observability,r_training_provenance,r_llm_eval_action c_trust;
class r_vectordb_go c_sys;
Each flagship pairs an implementation with independent, reproducible evidence that it is correct. Results that are not wins are reported as they are.
| Project | What it is | Validation and results |
|---|---|---|
| agent-platform |
An integrated AI platform composed from nine of these libraries | OpenAI and Anthropic failover, streamed agent steps, an MCP server, and per-tenant memory; a worker killed mid-job resumes without re-running steps (SIGKILL test in CI) |
| transformer-from-scratch |
A decoder-only transformer and a reverse-mode autodiff engine | Matches PyTorch to < 1e-9; 3.64 bits/char on real text vs 4.30; a pre-registered 8-seed study whose induction hypothesis was not supported |
| evaluation-harness |
A model and agent evaluation framework | Statistics cross-checked against SciPy to machine precision: bootstrap CIs, McNemar, and Cohen's d |
| ann-vector-search-library |
An HNSW approximate nearest neighbor library with a Rust core | Matches hnswlib's recall on 100,000 SIFT vectors, and the default Rust core answers 1.2 to 1.5x faster on ARM, where hnswlib runs without SIMD |
| rlhf-reward-model |
A reward model with PPO and DPO policy optimization | A head-to-head PPO vs DPO comparison on the same preference task, and a reward over-optimization (Goodhart) study |
| constrained-generation-library |
A schema-constrained decoder built on compiled automata | 240 of 240 outputs validate against the jsonschema reference; the two agree on 2,008 cases |
| llm-gateway |
A safety gateway for LLM APIs, with a Go reverse proxy | Retry and failover, per-tenant isolation, and injection and PII defenses; the Go proxy matches the Python rules on every parity case |
| hybrid-rag |
A hybrid retrieval system evaluated on the BEIR benchmark | Stemmed BM25 scores 0.687 nDCG@10 on SciFact, above the published BEIR baseline of 0.665, and answers about 200x faster than rank_bm25 on 171,000 documents |
| react-agent |
A ReAct reasoning-and-acting agent | Adversarial tool-use robustness, recovery, and a benchmark against a single-shot baseline |
| training-provenance |
A content-addressed reproducibility and lineage system for ML | End-to-end reproduction, crash recovery, and an exhaustive tamper-detection matrix |
| multi-agent-orchestrator |
A planner, workers, and a critic over a shared blackboard | Durable execution with resume, and a single-agent vs orchestrator comparison |
| corpus-dedup-library |
Near-duplicate detection for training corpora, with a Rust core | Deduplicates 1.4 million C4 documents in 30 seconds; exact mode reaches precision 1.000 and runs 13.7x faster than datasketch |
| bpe-tokenizer-library |
A byte-level BPE tokenizer with a Rust core that matches its Python reference token for token | Trains a 50,257-token vocabulary on 100 MB of C4 in 6.7 seconds and encodes faster than tiktoken in batch (68.5 vs 52.4 MB/s) |
| vectordb-go |
A persistent HNSW vector database server in Go (brew install adeoluo/tap/vectordb) |
On one million SIFT vectors, NEON kernels answer 1.3 to 3.5x faster than hnswlib at similar recall on ARM; checksummed write-ahead log and crash recovery |
Model internals, training loops, tokenization, data preparation, and classical NLP models.
- transformer-from-scratch: A reverse-mode automatic differentiation engine and a decoder-only transformer language model, built from scratch; gradients verified against finite differences and attention demonstrated on a copy task. Python
- cnn-from-scratch: A convolutional neural network and its explicit backpropagation (conv2d, pooling, dense), built from scratch in Python; gradients verified against finite differences and translation invariance demonstrated against a linear baseline. Python
- neural-word-embeddings: Skip-gram word embeddings with negative sampling from scratch: hand-derived gradients, a unigram negative-sampling table, and category-retrieval evaluation. Python
- bpe-tokenizer-library: A byte-level BPE tokenizer implementing the GPT-2 algorithm, with a Rust core (PyO3) used by default that matches its Python reference token for token; lossless for any input and faster than tiktoken in batch. Rust
- corpus-dedup-library: A corpus near-deduplication and quality-filtering library using MinHash and LSH, with a bit-exact Rust core used by default, a Python reference, and a JSONL CLI; deduplicates 1.4 million C4 documents in 30 seconds. Python
- crf-sequence-labeler: A linear-chain conditional random field for sequence labeling from scratch: Viterbi decoding, forward-backward training with log-likelihood gradients, and span-level evaluation. Python
- dependency-parser: An arc-standard transition-based dependency parser from scratch: a static oracle, an averaged structured perceptron policy, greedy decoding, and attachment-score evaluation. Python
- statistical-translation: Statistical machine translation alignment from scratch: IBM Model 1 and Model 2 word alignment trained by expectation-maximization, with alignment-error-rate evaluation. Python
- topic-model-lda: Latent Dirichlet allocation from scratch: collapsed Gibbs sampling with a Rust sampler that reproduces the Python one exactly, and UMass topic-coherence evaluation; faster than gensim on C4. Python
Approximate nearest neighbor search, hybrid and graph retrieval, and grounded generation.
- ann-vector-search-library: An approximate nearest neighbor search library implementing HNSW graphs, with a Rust core used by default (SIMD f32, or f64 matching the Python reference exactly); matches hnswlib's recall on SIFT. Python
- hybrid-rag: Hybrid retrieval from scratch: stemmed BM25 and TF-IDF over inverted indexes, reciprocal-rank fusion and reranking, evaluated on BEIR; 0.687 nDCG@10 on SciFact. Python
- graphrag: GraphRAG from scratch: entity and relation extraction, knowledge-graph construction, and traversal-based multi-hop retrieval. Python
- agentic-rag: Agentic retrieval from scratch: query decomposition, a self-querying retriever-agent, and iterative multi-hop retrieve-reason-retrieve. Python
- grounded-copilot: A retrieval-augmented copilot built from scratch: TF-IDF retrieval, inline citations, an abstention guardrail when retrieval is weak, and a sentence-level faithfulness check that verifies every claim traces to a cited source. Python
Reward modeling, RLHF, preference optimization, self-training, and prompt optimization.
- rlhf-reward-model: Classical RLHF from scratch: a Bradley-Terry reward model with PPO, a DPO implementation with a head-to-head PPO versus DPO comparison, and an explicit reward over-optimization study. Python
- preference-optimization: Direct Preference Optimization from scratch: a behavior-cloned reference, a Bradley-Terry preference dataset, and an exact DPO gradient that aligns a policy to a hidden reward. Python
- self-improvement-loop: Recursive self-improvement by rejection-sampling self-training with a verifier (STaR-style) from scratch: generate, verify, filter, rationalize, and behavior-clone a policy on a fully checkable reasoning task. Python
- prompt-optimizer: Automated prompt optimization from scratch: instruction search and bootstrapped few-shot selection compiled against a metric, with a four-way ablation and an HTTP service. Python
The layer between models and users, covering safety, caching, failover, and structured output.
- llm-gateway: A safety gateway for language-model APIs: prompt-injection defense, PII redaction, output-policy enforcement, and a semantic cache, plus a Go reverse proxy with the same rules, measured on an adversarial suite. Python
- constrained-generation-library: A structured-generation library built from scratch in Python: compiles a JSON Schema into a finite automaton and masks a model's tokens so output is schema-valid by construction (100% valid JSON across any model versus 0% unconstrained). Python
Tool-using agents, multi-agent orchestration, and language-model products built on them.
- react-agent: A ReAct reasoning-and-acting agent built from scratch: tool use, a transparent control loop, and full step tracing. Python
- multi-agent-orchestrator: A multi-agent orchestrator from scratch: a planner decomposes a task, workers execute subtasks, and a critic verifies, over a shared blackboard. Python
- agent-platform: An integrated AI platform composed from nine of these libraries: an authenticated multi-tenant API, OpenAI and Anthropic failover, streamed agent steps, an MCP server, per-tenant memory, durable multi-agent jobs with crash recovery, tracing, and evaluation. Python
- agent-memory: Long-term memory for AI agents: episodic, semantic, and procedural memory in SQLite with hybrid retrieval, fact versioning, consolidation, and an MCP server. Python
- nl-sql-analyst: A natural-language-to-SQL analyst powered by a plugged-in language model, with read-only guardrails and result verification; validated SQL runs against a real SQLite database and is evaluated for answer accuracy and guardrail coverage. Python
- ai-code-reviewer: An automated code reviewer powered by a plugged-in language model (Claude in production, an offline provider in CI), evaluated on a labeled benchmark of bug-introducing diffs for real bug-catching precision and recall. Python
- agent-sandbox: A policy-based sandbox for running AI agent tool calls with declarative rules, resource limits, and a tamper-evident audit log. Rust
Evaluation statistics, tracing, factuality, red-teaming, and reproducible provenance.
- evaluation-harness: An evaluation and benchmarking framework for language models and agents, built from scratch: pluggable tasks and graders, bootstrap confidence intervals, significance testing, and contamination checks. Python
- llm-observability: An LLM observability stack: a Python tracing library, a collector with a JSON API, and a TypeScript dashboard for traces, latency, tokens, and cost. Python
- training-provenance: Content-addressed provenance tracking for machine learning pipelines: a deduplicating artifact store, a content-addressed lineage DAG, and bit-for-bit reproducibility and integrity verification. Python
- factuality-auditor: A hallucination and factuality auditor from scratch: claim extraction, knowledge-base verification, and calibrated confidence with honest abstention. Python
- red-teaming: An automated red-teaming engine from scratch: an evolutionary search for guardrail-evading prompts, attack-success measurement, and a hardened defense, over fully fictional restricted terms. Python
- llm-eval-action: A GitHub Action that gates pull requests on statistically tested LLM evaluation regressions. TypeScript
Storage engines, experiment orchestration, hyperparameter search, and developer tools.
- vectordb-go: A concurrent, persistent HNSW vector database server in Go: a checksummed write-ahead log, snapshot and replay crash recovery, an HTTP API, and benchmarks against hnswlib and FAISS. Go
- mcp-ml-tools: A Model Context Protocol server with machine learning engineering tools: BPE token counting and cost estimates, BM25 search, paired bootstrap and McNemar evaluation comparison, JSON Schema validation, and prompt-injection and PII scanning. TypeScript
- sweep-orchestrator: A hyperparameter sweep orchestrator from scratch: successive halving and Hyperband, parallel early stopping, multi-objective Pareto optimization, and hyperparameter importance. Python
- hyperparameter-optimizer: Black-box hyperparameter optimization from scratch: random and quasi-random search, a Tree-structured Parzen Estimator, and Gaussian-process Bayesian optimization with Expected Improvement. Python
- profile-forge: A Go CLI that generates a GitHub profile README and portfolio JSON from live repository metadata and a small YAML config. Go
- homebrew-tap: Homebrew formulas for vectordb, agent-sandbox, corpus-dedup, and profile-forge. Ruby
Bytes of code per language, summed across my public repositories with the GitHub languages API. Forks are excluded.
| Language | Bytes | Share | Repos |
|---|---|---|---|
| Python | 2.5 MiB | 67.1% | 35 |
| Rust | 394.1 KiB | 10.3% | 5 |
| TypeScript | 334.4 KiB | 8.7% | 4 |
| Go | 283.3 KiB | 7.4% | 3 |
| Shell | 128.7 KiB | 3.4% | 38 |
| Other | 121.8 KiB | 3.2% |
pie
title Code by language (bytes)
"Python" : 2641487
"Rust" : 403583
"TypeScript" : 342399
"Go" : 290056
"Shell" : 131804
"Other" : 124716
Counted 3.8 MiB across the 39 repositories that contain code.
Repositories with a tagged release. Badges link to the release page.
| Project | Latest release | Language |
|---|---|---|
| agent-memory | Python | |
| agent-platform | Python | |
| agent-sandbox | Rust | |
| agentic-rag | Python | |
| ai-code-reviewer | Python | |
| ann-vector-search-library | Python | |
| bpe-tokenizer-library | Rust | |
| cnn-from-scratch | Python | |
| constrained-generation-library | Python | |
| corpus-dedup-library | Python | |
| crf-sequence-labeler | Python | |
| dependency-parser | Python | |
| evaluation-harness | Python | |
| factuality-auditor | Python | |
| graphrag | Python | |
| grounded-copilot | Python | |
| hybrid-rag | Python | |
| hyperparameter-optimizer | Python | |
| llm-eval-action | TypeScript | |
| llm-gateway | Python | |
| llm-observability | Python | |
| mcp-ml-tools | TypeScript | |
| multi-agent-orchestrator | Python | |
| neural-word-embeddings | Python | |
| nl-sql-analyst | Python | |
| preference-optimization | Python | |
| profile-forge | Go | |
| prompt-optimizer | Python | |
| react-agent | Python | |
| red-teaming | Python | |
| rlhf-reward-model | Python | |
| self-improvement-loop | Python | |
| statistical-translation | Python | |
| sweep-orchestrator | Python | |
| topic-model-lda | Python | |
| training-provenance | Python | |
| transformer-from-scratch | Python | |
| vectordb-go | Go |
Generated by profile-forge from live repository metadata.


