```
```

Keith Lohnes

Principal Software Engineer

Architecting scalable distributed systems and leading engineering teams since 2009. Specializing in cloud-native security, high-performance data systems, and systems programming in Rust and Go.

async fn architect_systems() -> anyhow::Result<()> {
    // 17+ years building the future
    let stack = "Security, Data, and Distributed Systems";
    deploy_at_scale(stack).await?;
    Ok(())
}

Professional Experience

Principal Software Engineer / Technical Lead

RoonCyber (formerly ThreatX)

May 2023 - Present

Architect and lead team of 4-6 engineers building agentless CNAPP product from 0-to-1. Build runtime and network event correlation engine in Go mapping security events to MITRE ATT&CK tactics and techniques. Architect HTTP transaction analyzer applying network security rules with concurrent caching; contribute upsert and eviction handlers upstream to mini-moka Rust crate. Architect schema generation system producing OpenAPI specs from observed network traffic. Lead Rust monolith to microservices decomposition using domain-driven design bounded contexts. Advise CEO on AI-first strategy; implement agent-driven architecture documentation keeping docs synchronized across repositories.

Rust Go C eBPF gRPC Protobuf Kubernetes MongoDB Postgres AWS S3 Kafka Open Telemetry

Principal Software Engineer

Twisp

March 2022 - January 2023

Implement write partitioning for ledger account isolation and read replication for account rollup balancing on DynamoDB's per-partition throughput limits. Implement distributed Timestamp-as-a-Service (TaaS) in Rust to avoid GC pauses; quorum-based replicated monotonic counters with generational restarts persisted in DynamoDB. Harden MVCC transaction layer through formal verification with Galois; fix implementation code paths that violated formally modeled isolation invariants. Implement F1-style online schema migration for customer-defined schemas via dynamic protobufs on a zero-downtime distributed ledger.

Go Bazel AWS Lambda DynamoDB Rust ECS EC2 Docker GraphQL gRPC

Senior Software Engineer

Wallaroo Labs

June 2020 - March 2022

Architect and implement Rust-based AI inference engine on Kubernetes; 10,000-70,000 req/sec across TensorFlow and ONNX models with zero-downtime model hot-swap via in-flight request draining; contribute fixes upstream to ONNX runtime and rust-s3 crates. Build deployment coordination server managing model versioning, canary/blue-green rollouts, and auto-scaling on Kubernetes via Helm. Design templatized Keycloak OIDC integration enabling self-service enterprise SSO provisioning through Replicated install wizard. Lead Pony-to-Rust language transition for engineering org through pair programming and code review.

Rust Erlang Pony Python Azure Kubernetes TimescaleDB Grafana Helm Docker Hasura Postgres GraphQL Keycloak

Principal Software Engineer (Data)

Vertex Software, LLC

November 2017 - May 2020

Redesign data architecture from graph-only to polyglot persistence for CAD platform: precomputed assembly lineage paths, KV-backed triangle mesh store, and Kafka-driven rendering pipeline. Lead live production migration via dual-write strategy from JanusGraph to polyglot architecture. Serve as data architecture authority across engineering teams; guide storage technology selection, schema design, and query optimization.

Java Scala JanusGraph Cassandra TinkerPop Gremlin Elasticsearch Protobuf Flatbuffer Kafka MySQL Postgres DynamoDB AWS Docker

Software Engineer

IBM

August 2015 - November 2017

Develop and operate IBM Graph, a multi-tenant managed graph database service on IBM Cloud. Implement and contribute upstream SASL-based authentication and WebSocket/HTTP protocol unification for Apache TinkerPop and JanusGraph. Design and implement Compose.com's managed JanusGraph offering with multi-tenant isolation on shared Cassandra/Scylla clusters. Prototype TinkerPop-compliant graph database on Postgres using Scala as vendor hedge after Aurelius/TitanDB acquisition by DataStax; ultimately ship JanusGraph on Scylla via Compose.

Java Scala Spark Postgres JanusGraph Cassandra Scylla TinkerPop Gremlin Go Ruby Python Docker Kubernetes IBM Cloud

Software Developer

Power Advocate, Inc

January 2009 - July 2015

Build and ship spend categorization ML pipeline on Spark MLLib; implement Random Forest classifier contribution for MLLib. Develop features across full JEE/JavaScript stack.

Java JEE Spark MLLib HBase HDFS Spring Oracle

Education

Bachelor of Science

Northeastern University, Boston, MA

January 2012

Computer Science and Music, magna cum laude

Technical Expertise

🚀

Systems Architecture

Distributed Systems
Microservices & DDD
Cloud Native Security
Event-Driven Architecture

Languages & Frameworks

Rust, Go, C, Java, Scala
Python, Erlang, Pony
Kubernetes, Docker
GraphQL, gRPC, Protobuf
🗄️

Data & Storage

Postgres, MongoDB, DynamoDB
Graph Databases (JanusGraph)
Apache Kafka
Elasticsearch, TimescaleDB
☁️

Cloud & DevOps

AWS, Azure, IBM Cloud
eBPF, Open Telemetry
CI/CD Pipelines
Monitoring & Observability

Open Source Contributions

Mini-Moka Cache

Mini-moka is a TinyLfu based cache written in Rust. I'd prototyped some software that required changes to this library, but wound up implementing a TinyLfu based sampled queue that utilized an exponentially decaying function to sample. Added upsert operations, eviction handlers, and exposed a testing library.

Rust TinyLfu Caching

ONNX Runtime & Rust S3 Fixes

Not all open source contributions are big. Sometimes, you just want to improve the API that you're using. Fixed error handling in the ONNX runtime wrapper that was panicking on null pointers and occasionally bringing down our inference server. For rust-s3, added missing Tag implementation with key and value methods - a tiny fix and test were all it needed.

Rust ONNX AWS S3

IBM's JanusGraph as a Service offering needed support for authentication in a similar manner to the rest of their cloud database offerings. The requisite changes were added to both TinkerPop and then downstream into JanusGraph. We also wanted to be able to run both websockets and HTTP on the gremlin server at the same time with auth. Provided abstraction for different HttpAuth schemes and added combined handler for Http and Websockets.

Java Graph Databases Authentication WebSockets

JanusGraph Authentication

After the TinkerPop changes, we added authentication into JanusGraph and made sure JanusGraph could utilize the combined channelizer. Quite a few of the fixes here were just cleaning up things we needed to get our internal implementation working before JanusGraph had these changes in it. This enabled enterprise graph database deployments with proper authentication and protocol unification.

Java JanusGraph Enterprise Auth IBM Cloud

Personal Projects

An AI-powered D&D campaign management platform I built for Dungeon Masters who want narrative-first tools instead of mechanics-heavy VTTs. It started because I wanted something that matched how I actually think about running campaigns: plot threads, tension clocks, character arcs, not just maps and stat blocks. Features a campaign wizard, NPC manager, encounter and dungeon builders, a full session mode workflow, theater of mind spatial tracking, and AI-assisted session analysis that extracts plot progression from your notes. 56-table Postgres schema and a blue lobster mascot named Lobby Lompy.

React Node.js Express Postgres LiteLLM OpenAI Stripe Cloudflare Pages Linode Postgres Cloudflare R2 Docker

Task Tree MCP

A hierarchical task management system for Claude Code that maintains context and prioritization through lineage injection. Solves the core problem of AI agents losing sight of original goals when diving deep into implementation details. Instead of flat task lists, tasks are organized as nodes in a tree where AI agents maintain awareness of high-level goals while working on specifics. Features immutable task patterns, completion criteria validation, and real-time context injection across all AI interactions.

Python MCP NetworkX SQLite Claude Code

A beautiful weather and tide app for Weymouth's Mill Cove area. Born from a simple text message from a neighbor who thought Mill Cove deserved its own weather app. Automatically identifies "MOOD days" when high tide, good weather, and sunny skies align for perfect beach moments. I love creating free tools that serve our local community and bring neighbors together.

PWA Weather API NOAA Tides

Weymouth Waste Pickup

My neighbor was saying the town website is a pain, and she wished there was just an easy way to reference everything about trash and lawn and leaf pickup. So I said, "I can make that happen". A simple website that makes it easy to get answers about Weymouth's waste collection schedules without navigating through frustrating municipal websites.

Municipal Data User Experience

A tool I built and used to help reduce my dog's reactivity to animals on the TV. Sometimes software engineering isn't about distributed systems or cloud architecture, sometimes it's about solving a specific problem in your daily life, like helping your dog stay calm during nature documentaries.

Dog Training Behavioral Science Personal Tool

Album Club Bot

It's not often that I get to write something that my friends and I use all the time. My album club uses this Discord bot every week. It randomly chooses one of us to review the album next during our meetings, and it also gets next week's album at random, with a few rules so we all get a chance to present an album. Are there better ways to handle this than storing data in a Google spreadsheet? Absolutely. However, we already had everything in the spreadsheet, the users were familiar with the interface, I can make API calls for free, and run the bot off of a raspberry pi on my desk.

Discord API Google Sheets Raspberry Pi Friends

Let's Build Something Amazing

I'm always interested in discussing new opportunities, challenging problems, and innovative technologies.