Emily "Luna" Gurnee
I build the software that runs services and the infrastructure that keeps it running: backend systems in Kotlin and TypeScript, an orchestrator for game server fleets, email delivery infrastructure at Reloop, and the Linux hosts under all of it, down to DNS and firewalls.
Work
Systems I have designed, built, or run. Two are shown in depth below.
| Project | What it is | Built with | Role |
|---|---|---|---|
| Universe | One JAR. The whole cluster. | Kotlin, Ktor, Hazelcast, Gradle, Docker | Architecture and core implementation |
| Reloop | Open-source email infrastructure you can self-host. | TypeScript, Bun, Next.js, PostgreSQL, Docker | Software Engineer, Backend |
| LunarShell | A hardened shell environment for Linux servers, installed in one command. | Bash, zsh, Starship, OpenSSH, systemd | Author |
| Clover Client | Backend for a cross-platform Minecraft launcher. | PostgreSQL, S3, CloudFront, Discord OAuth, REST | Software Engineer, Backend and REST API |
Universe
One JAR. The whole cluster.
A single-JAR orchestrator that deploys and manages application instances across a cluster of nodes. The same artifact runs as the master or a wrapper, cluster state lives in embedded Hazelcast, and one template deploys to screen, tmux, Docker, or Kubernetes.
Control
- Operator CLI · HTTP · WebSocket console
- Templates versioned file trees · local, S3, Git
Master
- Ktor REST + WS :7000 bearer auth · rate limiting
- Cluster state Hazelcast IMap
Cluster
- Hazelcast :6000 peer to peer · IExecutor task dispatch
Wrappers
- Wrapper × N same JAR, role set by config
- Runtime screen · tmux · Docker · Kubernetes
Reloop
Open-source email infrastructure you can self-host.
My work sits where the application meets the machine it runs on: the installer and proxy in front, the SMTP relay and DNS verification underneath, and the log lines that must never contain a secret. This is the merged record, newest first.
- #139 delivery stop the smtp relay corrupting MIME boundaries that end in =
- #138 self-hosting support running the self-host install behind an existing reverse proxy
- #135 delivery deliver system email in production instead of falling back to Mailpit
- #134 auth allow a separate internal origin for session validation
- #133 delivery make the system email name configurable with APP_NAME
- #132 operators show the configured SMTP hostname in the dashboard
Experience
| When | Where | What I did |
|---|---|---|
| to | Reloop Software Engineer, Backend | Email delivery infrastructure and self-hosting Built the self-host VPS installer and reverse-proxy support, made verification DNS resolvers configurable, moved system email onto production delivery, fixed the SMTP relay corrupting MIME boundaries, and kept OTPs and DKIM private keys out of logs. TypeScript on Bun, PostgreSQL. |
| to | Sona Interactive LLC COO | Studio operations for Clover Client Operations and engineering direction for the studio behind Clover, a cross-platform Minecraft launcher. |
| to | Clover Client Software Engineer, Backend and REST API | Accounts, API, and asset delivery for a Minecraft launcher Backend and REST API for a launcher on Windows, macOS, and Linux: PostgreSQL, S3 behind CloudFront for asset delivery, Discord OAuth for sign-in. Shipped through private beta. |
| to | Darkless LTD Director and Lead DevOps | Bare-metal, VPS, and game server hosting Runs hosting on owned hardware in North Carolina and Dallas. Provisioning with Terraform and Ansible, monitoring, and security operations across the fleet. |
| to | Scala Studios VP and Co-Director | Infrastructure for large Minecraft networks Kotlin and Java services on Paper and Velocity, MongoDB and Redis persistence, Kubernetes deployments, cross-proxy player state coordination, and JVM performance work for high-traffic networks. |
| to | LunarLabs LLC Founder and COO | Software studio and home of Universe Builds and maintains client websites and internal tooling, and develops Universe, the single-JAR cluster orchestrator. |
| to | Refine Development Developer | Premium Minecraft server software Plugin development on the Paper ecosystem, including Phoenix, Bolt, Carbon, and Radium, a performance-focused Paper fork. |
| to | JasmeowSystems Systems Administrator | Managed Linux administration for clients Client Linux fleets: uptime and resource monitoring with webhook alerts, hardening with UFW, IPTables, and Fail2Ban, SSH logging, and rclone backups. |
Expertise
| Domain | In practice | Tools |
|---|---|---|
| Backend engineering | Services on the JVM in Kotlin and Java, TypeScript on Bun and Node, plus Go and Rust where they fit. REST and WebSocket APIs, auth flows, and the data layers behind them. | Kotlin, Java, TypeScript, Go, Rust, REST, WebSockets, OAuth |
| Infrastructure and platform | Containerized workloads on Kubernetes and Docker, LXC where a full cluster is overkill, and the automation that provisions and ships them. | Kubernetes, Docker, LXC, Helm, Terraform, Ansible, CI/CD, GitOps |
| Linux and systems | Day-to-day operation of Ubuntu, Debian, Enterprise Linux, and Arch hosts: systemd services, SSH hardening, bare metal and VPS fleets, and the tooling that keeps them consistent. | Ubuntu, Debian, EL8/EL9, Arch, systemd, SSH, Bash |
| Networking | DNS from records to resolver behavior, firewalls, reverse proxies and load balancing, and mesh networking with Tailscale for private infrastructure. | DNS, Firewalls, Nginx, Caddy, Load balancing, Tailscale, Cloudflare |
| Data and messaging | PostgreSQL as the default, MongoDB and Redis for game state and caching, NATS for messaging, and S3-compatible object storage for assets and templates. | PostgreSQL, MongoDB, Redis, NATS, S3-compatible storage |
| Observability | Metrics and dashboards for services and hosts, with alerting wired to the people who need to act on it. | Prometheus, Grafana, InfluxDB, Uptime monitoring, Alerting |
| Developer tooling | Installers, CLIs, shell environments, and bots that remove repetitive work. If something pages twice, the fix is a tool. | CLIs, Installers, Shell tooling, Discord bots, Automation |
About
I have run Linux servers for a living long enough that I trust a well-written systemd unit more than most dashboards. I have also been in Minecraft since it launched, which is how a hobby turned into a career in game infrastructure, and then into backend work generally.
I like the whole stack, not as a slogan but because the bugs live in the seams: the resolver the app did not expect, the proxy that strips a header, the kernel setting nobody changed. I would rather understand the layer underneath than route around it.
I build tools out of productive laziness. If something pages me twice, the fix is a script, a CLI, or a bot, and it usually ends up open source. Off the clock: space, and the kind of documentation that explains why.
Contact
Hiring for backend, infrastructure, platform, or systems work, or want to talk about orchestration and email delivery? Email is the fastest way to reach me.
luna@pawful.dev