Show HN: Drop-in SQS replacement based on SQLite
Licensing and Monetization
- Project is AGPL-licensed, prompting debate:
- Some dislike AGPL “on principle,” preferring MIT and arguing it discourages commercial adoption and proprietary integration.
- Others argue AGPL best preserves openness, ensures improvements flow back, and doesn’t block monetization—only requires publishing modifications.
- Monetization plans are unclear; ideas include a hosted service with multi-tenancy and billing, but the current focus is on “scratching an itch,” not a polished business model.
- Discussion about whether every OSS project needs a business model and whether talking about monetization is appropriate or expected on HN.
Use Cases and Target Scenarios
- Strong interest for:
- Local development and functional testing as an SQS-compatible mock (alternative to LocalStack/ElasticMQ).
- Simple self-hosted queues for small teams, on-prem / private cloud, k8s/k3s deployments, and edge/“local-first” workloads.
- Some see potential as an operationally “smarter” queue: built-in rate limiting, routing, per-partner throttling, observability, and admin tooling, reducing bespoke ops work.
Comparison to SQS and Other Queues
- Many note SQS is already very cheap and highly engineered, globally available, and HA; hard to compete purely on cost.
- Others report bills where SQS costs exceed the servers doing the work at very high volumes.
- Alternatives discussed: RabbitMQ/AMQP, Kafka, Redis Streams, beanstalkd, filesystem-based queues, ElasticMQ, and another SQLite-based queue prototype.
Technical Design, Distribution, and Reliability
- Current design: single Go binary using SQLite; SQS-compatible HTTP API only; SigV4 signing handled server-side.
- SQLite praised as rock-solid and widely deployed; objections that “single node SQLite” sounds less “production” than AWS SQS.
- No distributed implementation yet:
- High-level idea: mostly independent nodes, minimal coordination, queue metadata shared; possible use of S3/Dynamo, rqlite, libsql, Litestream, etc.
- Critics say distributed semantics, at-least-once guarantees, FIFO, replication, and failure handling are being hand-waved.
- Implementation details:
- Foreign keys disabled for performance; cascading deletes handled manually in transactions.
- Future thoughts of mixing backends (SQLite, RocksDB, DuckDB) for performance and analytics.
UX, Code Quality, and Tooling
- Suggestions: compatibility/feature table vs SQS, example apps, testcontainers support, richer UI metrics, better number alignment.
- Codebase praised as small, readable Go; some guidance offered on more idiomatic Go packaging.