Show HN: Lightweight Task queue on Erlang/OTP, SQLite-backed, no overengineering

Published 2026-06-13 · Updated 2026-06-13

Show HN: Lightweight Task Queue on Erlang/OTP, SQLite-backed, no overengineering

Ever spent hours wrestling with a complex task queue, only to realize it’s built on layers of abstraction you don’t need, costing you more than it’s worth? We've been there. At HiveCore, we’re constantly searching for tools that genuinely simplify our work, particularly when it comes to managing asynchronous processes – a critical need for anyone building applications that handle diverse tasks, from monitoring campsite availability to processing trip reports. That’s why we built ‘Sparrow,’ a surprisingly effective, lightweight task queue for Erlang/OTP, backed by SQLite, and deliberately designed to avoid unnecessary complexity. We wanted something that fit neatly into our workflows, prioritized reliability over bells and whistles, and was, frankly, a joy to use. We're sharing it here as a heads-up for others who might be facing similar challenges.

The Problem with Over-Engineered Solutions

Let’s be honest. Many task queue systems are bloated. They introduce dependencies, complex configuration, and a steep learning curve, all for features you probably won’t use. We found ourselves frustrated with solutions that required managing message brokers, complex routing rules, and extensive monitoring dashboards. This wasn't just slowing us down; it was adding unnecessary overhead to our projects. We realized that Erlang’s strengths – fault tolerance, concurrency, and a focus on efficient resource utilization – could be powerfully applied to a task queue without the accompanying complexity.

Sparrow: Simple at its Core

Sparrow is built on a core set of Erlang/OTP principles. It's based around a single supervisor, responsible for managing the queue and its worker processes. The queue itself is a simple Erlang list, efficiently storing task definitions. Workers pull tasks from the list, process them, and then mark them as complete. The entire system is contained within a single Erlang module, making it incredibly easy to understand, deploy, and maintain. We deliberately avoided introducing external dependencies beyond the Erlang standard library and SQLite.

**Actionable Detail:** Sparrow’s configuration is handled through a single, straightforward `config/` file. This eliminates the need for YAML or JSON files, simplifying deployment and ensuring consistency across environments. The file contains just a few key settings: the number of worker processes to run, the SQLite database path, and a timeout value for tasks.

SQLite for Persistence and Simplicity

Using SQLite as the backend was a key design decision. We wanted a database solution that didn't require a separate server process or a complex setup. SQLite’s lightweight nature and transactional capabilities perfectly suited our needs. Each task is stored as a record in the database, including a unique ID, the task definition (a string), and a timestamp. This allows us to easily track task status, retry failed tasks, and perform basic reporting.

**Example:** Let’s say you’re building an RV trip planning app and need to automatically send a confirmation email to users when a booking is made. Sparrow could enqueue a task to send the email, with the email content stored as a string in the SQLite database. The task would be processed by a worker process, retrieving the email content and sending it. If the email fails to send (perhaps due to a temporary network issue), Sparrow automatically retries the task, ensuring the email is eventually delivered.

Scalability and Fault Tolerance – Erlang’s Strength

Erlang’s OTP supervisors are at the heart of Sparrow’s robustness. The supervisor monitors the worker processes, automatically restarting them if they crash. This ensures that the task queue remains operational even in the face of unexpected errors. Furthermore, Erlang’s lightweight processes mean that Sparrow can handle a large number of tasks without consuming excessive resources. We’ve tested Sparrow with dozens of concurrent workers processing hundreds of tasks, and it consistently performed admirably.

**Actionable Detail:** Sparrow utilizes Erlang’s ‘nested supervision’ feature. This allows us to define a hierarchy of supervisors, providing granular control over fault tolerance. If a worker process fails, only the immediate supervisor is alerted, preventing cascading failures.

Why This Matters for Your Projects

We built Sparrow because we believe in pragmatic solutions. It’s not a silver bullet, and it’s certainly not designed for massive, enterprise-level applications. But for smaller projects – particularly those focused on remote monitoring, data processing, or automation – Sparrow offers a compelling alternative to complex, over-engineered task queues. It provides a solid foundation for building reliable asynchronous workflows without adding unnecessary overhead. It’s a system that’s easy to understand, easy to deploy, and, most importantly, easy to use.

**Takeaway:** If you're building an Erlang/OTP application that requires a task queue and you’re tired of wrestling with bloated solutions, give Sparrow a look. Its simplicity and reliance on Erlang’s core strengths can save you time, effort, and frustration. We're open to feedback and contributions – this is a community project, and we believe in building tools that truly empower our users.


Frequently Asked Questions

What is the most important thing to know about Show HN: Lightweight Task queue on Erlang/OTP, SQLite-backed, no overengineering?

The core takeaway about Show HN: Lightweight Task queue on Erlang/OTP, SQLite-backed, no overengineering is to focus on practical, time-tested approaches over hype-driven advice.

Where can I learn more about Show HN: Lightweight Task queue on Erlang/OTP, SQLite-backed, no overengineering?

Authoritative coverage of Show HN: Lightweight Task queue on Erlang/OTP, SQLite-backed, no overengineering can be found through primary sources and reputable publications. Verify claims before acting.

How does Show HN: Lightweight Task queue on Erlang/OTP, SQLite-backed, no overengineering apply right now?

Use Show HN: Lightweight Task queue on Erlang/OTP, SQLite-backed, no overengineering as a lens to evaluate decisions in your situation today, then revisit periodically as the topic evolves.