Ash Hart
I build, secure, and run the systems around AI.
15+ years across software engineering, AWS infrastructure, DevOps, networking, and cybersecurity.
Alongside that work, I build local inference tools and experiment with how models learn, remember, and reason.
Selected work
all repositoriesalso tinkering with Duo, ComputerUse, and Cortheon.
Production work
My background is in the infrastructure, security, and operational work that keeps software running.
- AWS & DevOps
- Cloud architecture, infrastructure as code, CI/CD, networking, and DNS, with automation and troubleshooting across the stack.
- Cybersecurity
- Security hardening and technical infrastructure, alongside agent-safety work on permissions, policy decisions, audit trails, and approval boundaries.
Experiment notebook
11 notesSome of the questions I've tried to answer with working code.
These notes come from current projects and the archive, including the ideas that did not work.
Can a model gain a skill, then give it back?Removable LoRA skills worked on a toy task; compiling new skills was harder.
What I tried
A frozen toy decoder with small, removable LoRA adapters, packaged skills, and a compiler that tries to turn examples into new adapters.
What the notes show
In a saved 200-case synthetic arithmetic test, a hand-trained adapter raised exact-match accuracy from 12.5% to 92%; removing it restored the original output bit for bit. The later compiler did not beat the base model on held-out operators.
What I took from it
Learning one task and learning how to produce a new skill are different problems.
Can models exchange working memory instead of a written handover?Translating attention caches between frozen local models.
What I tried
Capture a local model's key-value cache, translate it into another model's representation, and compare the receiver with text handovers and wrong-memory controls.
What the notes show
The project explores bounded model-pair memory exchange. Transferring tensors is only one part of the test: the receiving model still has to use the information correctly.
What I took from it
A memory transfer needs a semantic check, not just a successful transport.
How do you teach a frozen model something new?Evidence, worked examples, and a teaching loop put through the same small test.
What I tried
In the earlier Vortex experiments, I compared six context formats on invented facts and procedures, using the same context budget and repeated seeds.
What the notes show
On one 35B MoE model, worked examples and the teach-and-test loop each passed 24 of 24 trials; raw pages passed 6. The teaching loop used twice as many model calls, and a dense 3B model failed the procedure test.
What I took from it
The right examples mattered, but the extra feedback loop did not earn a unique win on this narrow test.
Can a model revise a draft without changing what it has already said?Provisional tokens, immutable output, and a trace viewer for the failures.
What I tried
Explore a recurrent-depth serving engine that works on several provisional positions, compares strict decoding with a sequential reference, and records repairs and rollbacks.
What the notes show
The retained tests establish bounded decoding and repair behavior on toy checkpoints. They do not establish release-model language quality or an overall speed advantage.
What I took from it
Throughput only counts once the tokens are committed and the cost of repairing a draft is included.
How far can a small, fixed state carry a long sequence?Oscillatory sequence models and memory that keeps track of who did what.
What I tried
Build oscillatory state-space mixers and role-bound retrieval, then compare them with attention-style mixers and simpler retrieval baselines.
What the notes show
Saved synthetic benchmarks showed a mixer-level advantage at long contexts and useful role binding against swapped-role decoys. Short contexts favored attention, and language-model quality parity remained untested.
What I took from it
A faster sequence mixer is a systems result; it does not automatically make a better language model.
Can software learn from feedback without calling an LLM every time?A learning language tested on routing, simulated control, and numerical dynamics.
What I tried
Compile decision programs into a graph runtime with context, delayed rewards, and constrained actions; explore it through model routing, orbital simulations, and edge-of-chaos demos.
What the notes show
The code implements adaptive decisions and numerical demonstrations. A related Proof Lab produces bounded finite-search certificates and explicitly stops short of claiming an open theorem.
What I took from it
A decision policy, a numerical simulation, and a mathematical proof need different kinds of evidence.
What happens when neural creatures have to earn their energy?A small world with neural genomes, mutation, reproduction, and competition.
What I tried
Build a grid simulation where organisms sense their surroundings, spend energy, reproduce with mutations, and are grouped by behavioral novelty.
What the notes show
The simulation and evolutionary mechanisms are implemented, with component tests in the archive. These notes do not establish open-ended intelligence.
What I took from it
The interesting questions are in the behavior over time, not just whether the simulation runs.
Can a model pick up its context without reading it all again?Saving computed context and restoring it when the model and prefix match.
What I tried
Build local tooling for prepared instructions, documents, and session state, with compatible model-state snapshots and matching-prefix checks.
What the notes show
The CLI and lifecycle are implemented and covered by model-free tests. Real-model equivalence and performance still need qualification for the standalone implementation.
What I took from it
Reusable state has to match the exact model and input; a saved blob alone does not prove a speedup.
Can an agent resume a long job without losing track of what was verified?Durable tasks, checkpoint integrity, and an event history that survives interruption.
What I tried
Build a terminal agent harness that records work as events, checks checkpoint integrity, and separates attempted changes from evaluator-approved progress.
What the notes show
An interactive implementation and source tests are in place. Release qualification and a fresh broader run remain open.
What I took from it
Resuming a process and resuming trustworthy work are separate engineering problems.
Could a HomePod become the voice of a local AI assistant?Local inference and speech output, with a useful hardware boundary.
What I tried
Connect a local model and speech output to AirPlay, then add a push-to-talk path using a Mac microphone.
What the notes show
The bridge implements voice output and a host-microphone conversation path. Native HomePod microphone access remained unresolved, so this was not a standalone two-way HomePod assistant.
What I took from it
Getting sound out of a device does not mean you can get its microphone stream back.
Is the bottleneck actually where I think it is?Two investigations where the original performance hypothesis did not survive measurement.
What I tried
Separate memory-copy cost from tensor gathering in an MLX study, then test wider matrix kernels against whole inference requests in a separate 27B investigation.
What the notes show
The copy path was already near the measured memory-copy limit; array indexing was the avoidable cost. In the kernel study, isolated gains did not produce a dependable end-to-end speedup, while a bounds-correctness repair was retained.
What I took from it
Keep the negative result, check the full workload, and separate a correctness fix from a speed claim.
git activity
public GitHub activityOn the bench
2026-10-06Two Mac Studios. Bonded Thunderbolt 5. Testing TensorFold + MCDMA across both.
Follow the build on X