What Happened
A developer named Fabio Nonato de Paula published Luna Agent, an open-source AI agent built from scratch in roughly 2,300 lines of Python. No frameworks. Eight runtime dependencies. 106 tests.
The project started after evaluating three existing agent frameworks for a homelab project. One had 400,000 lines of code and 42,000 exposed instances on Shodan (a search engine for internet-connected devices - not a great security signal). Another was only nine days old. The third was so thin it would have required rebuilding most of the functionality anyway.
Luna Agent's feature list reads like what you'd expect from a much larger project:
- Persistent memory using SQLite with FTS5 keyword search, sqlite-vec embeddings, and recency decay. Results are fused using Reciprocal Rank Fusion, which combines multiple ranking signals into a single relevance score.
- MCP tool integration for connecting to external services and APIs using Anthropic's open Model Context Protocol standard.
- Minimal footprint - the entire codebase is small enough to audit in an afternoon.
The project is available on GitHub and designed to run locally.
Why It Matters
The AI agent framework space has a bloat problem. Popular frameworks wrap simple concepts in thousands of lines of abstraction, making them hard to debug, hard to secure, and hard to understand. When something breaks in a 400K-line framework, you are not fixing it yourself.
Luna Agent represents a counter-movement: small, auditable, self-contained agents that do what you need without the overhead. The Shodan detail is particularly telling. Frameworks with tens of thousands of exposed instances on the public internet suggest that people are deploying these tools without understanding their attack surface.
For developers building internal tools or homelab projects, the "build it yourself" approach has real advantages. You understand every line. You control the dependencies. You can actually read the security implications.
The MCP integration is worth noting specifically. As MCP becomes the standard protocol for connecting AI models to tools and data sources, having a lightweight agent that speaks MCP natively - without pulling in a massive framework - fills a real gap.
Our Take
This is the kind of project that makes framework maintainers uncomfortable, and it should. When one developer in a few weeks can replicate the core value of frameworks with 100x less code, that says something about how much unnecessary complexity we have been accepting.
The memory system design is smart. Combining keyword search, vector embeddings, and recency decay with rank fusion is a better architecture than what most frameworks ship by default. Most agents either forget everything between sessions or dump raw conversation logs into a vector store and call it memory.
That said, "no framework" projects carry their own risk. One maintainer means one bus factor. No community means fewer eyes on bugs. If you need production-grade reliability with SLAs, this is not that.
But for developers who want to understand how AI agents actually work - or who need a lightweight, secure agent for personal infrastructure - Luna Agent is worth a look. Sometimes 2,300 lines is all you need.