Inspiration

Our team was interested in security and training our own ML/RL models. So we integrated them into 1 project.

What it does

GravityWell is a honeypot mesh. An attacker attaches to the port, and an LLM acts as a user on the machine in order to keep the attacker engaged. Everything the attacker does is logged and sent down a pipeline to a ML engine that is trained to recognize attacks and categorize them.

How we built it

  • Honeypot: Python + Paramiko. A real SSH server that fakes a Linux shell
  • LLM: Qwen2.5-Coder-0.5B, LoRA fine-tuned with Unsloth, served on CPU via Ollama/llama.cpp. Improvises shell output for commands the honeypot doesn't have canned.
  • Collector API: Python + FastAPI + Pydantic. Receives one JSON event per login/command/logout, extracts IOCs, serves the dashboard.
  • Database: SQLite (WAL): sessions, events, iocs, clusters.
  • ML: PyTorch. Embeds and clusters sessions into attacker archetypes, projects them to 2D for the scatter plot.
  • Frontend: React + Vite + Tailwind + shadcn/ui, React Router. Live session feed, terminal replay, cluster map.
  • Infra: Docker Compose, four services, only the honeypot port exposed.

Challenges we ran into

Connecting each component to the next

Accomplishments that we're proud of

A trained and tuned LLM and ML engine

What we learned

Serving multiple areas with an API

What's next for GravityWell

Integrating a distributed system aspect

Built With

Share this project:

Updates

Submission history