russellromney/honker

SQLite extension + bindings for Postgres NOTIFY/LISTEN semantics with durable queues, streams, pub/sub, and scheduler

View on GitHub ↗Jump to charts ↓Open shareable report →

Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 3 hours ago
Added to GitGenius on September 22nd, 2026
Created on April 18th, 2026
Open Issues & Pull Requests: 42 (+0)
GitHub issues: Enabled
Number of forks: 76
Total Stargazers: 3,026 (+0)
Total Subscribers: 9 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 11.0 hours
Mean response time: 46.8 hours
90th percentile: 5.6 days
Tracked items: 34

How this project is maintained

Roughly one issue in five opened in the past year never receives a reply. Only 58% of issues opened in the past year have been closed. Three people close 100% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 18
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 39 days
Stale 30+ days: 2
Stale 90+ days: 1

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • wontfix (2)
  • enhancement (1)

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

Honker is a SQLite extension and language bindings that add Postgres-style NOTIFY/LISTEN semantics to SQLite, with built-in durable pub/sub, task queues, and event streams without requiring client polling, a daemon, or a separate broker.

SQLite projects eventually need pub/sub and task queues, but the conventional solution of adding Redis and Celery introduces a second datastore with separate backup requirements, a dual-write problem between business tables and queues, and an additional broker to operate. Honker solves this by keeping the queue in the same SQLite file as your primary data. The tool replaces queue-table polling with single-digit-microsecond PRAGMA data_version reads. A watcher checks every millisecond by default, delivering push-like semantics with single-digit-millisecond cross-process delivery. The approach allows INSERT INTO orders and queue.enqueue() to commit in the same transaction, so rollback drops both atomically. Honker provides durable at-least-once queues with retries, delayed jobs, priority, visibility timeouts, and dead-letter rows; durable streams with per-consumer offsets; time-trigger scheduling with cron and duration expressions; and named locks and rate limits.

Honker suits projects where SQLite is the primary datastore and you want to avoid running a separate queue broker. It works across any language that can load SQLite extensions, with bindings for Python, Node.js, Rust, Go, Ruby, Bun, Elixir, C++, .NET, Java, and Kotlin. The tool deliberately excludes workflow DAGs, task chains, multi-writer replication, and distributed locking across machines. The README does not compare it to other queue systems.

The project is in alpha stage, described as better than experimental but not yet beta-quality. Development appears focused on core functionality and language binding support rather than advanced orchestration features.