neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
하나의 바이너리로 구현된 트랜잭션 이벤트 브로커, 엔터티당 순서 파티션과 ack·상태·다음이벤트·타이머를 하나로 묶어 Raft 복제
A transactional event broker in one binary: one ordered partition per entity, and the ack, the state change, the next events and the timer of each step commit as one entry, replicated with Raft.
개발 도구Rust · GoGitHub @queen-mq온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
High-performance transactional message broker for applications that need an ordered stream per entity.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Queen MQ is a transactional event broker. When a worker handles an event, the ack, the state it
changes, the events it emits and the timer it sets commit as one entry of a replicated log, or not
at all.
On three nodes it carries 1M msg/s in and out of one queue of 10M partitions.
Queen speaks HTTP but is also compatible with Kafka clients.
Documentation · Quickstart · Benchmarks · MCP for agents · Try it free on Queen Cloud · Apache-2.0 · v2.0.0README 전문 보기 ↗A new paradigm for message brokers.
Queen is an open-source distributed message broker, able to sustain millions of messages per second. Every customer, order or conversation gets its own ordered partition. Every step a worker takes is saved as one commit, or not at all. One binary, no database, and Kafka clients work with it out of the box.
Live demo, Codemotion week: milan.queenmq.com: 50,000 cars in Milan, each car its own partition, 500,000 messages a second on one Queen node.
Documentation · Five-minute guide · The little book (PDF) · Benchmarks · MCP for agents · Try it free on Queen Cloud · Apache-2.0 · v2.6
The short version, in JavaScript. The full guide has nine steps in JavaScript, Python, Go, Rust and PHP. Every snippet, here and on the site, is cut from a program that runs them all and checks each one.
docker run -p 6632:6632 ghcr.io/queen-mq/queen:2.6.0
npm install queen-mq
The dashboard is at http://localhost:6632, served by the same process.
Optional: the first push creates a queue with the defaults.
import { Queen } from 'queen-mq'
const queen = new Queen({ url: 'http://localhost:6632' })
await queen.queue('orders')
.namespace('shop') // groups queues in the dashboard
.config({
leaseTime: 30, // seconds a worker holds a message before it is redelivered
retryLimit: 3, // failures before the message goes to the dead-letter queue
retentionEnabled: true, // retention runs only when this is on
retentionSeconds: 86400, // then messages older than a day are removed
})
.create()
In Kafka you choose a number of partitions and hash keys onto them, so a slow customer holds up every customer that shares its partition. Here a partition is one entity: a customer, an order, a conversation. The push that names it creates it, order holds inside it, and one queue has held ten million.
await queen.queue('orders')
.partition('customer-42') // one ordered partition per customer, created by this push
.push([{
transactionId: 'order-1001', // the dedup key: pushing the same id again is a no-op
data: { orderId: 1001, customer: 42, total: 59.9 },
}])
Without a consumer group, each message goes to one worker. Consumer groups, leases and every pop option are in the full guide.
await queen.queue('orders')
.each() // the handler gets one message at a time
.limit(1) // stop after one message; a worker leaves this out
.consume(async (msg) => { // acked when the handler returns, retried if it throws
console.log(msg.data)
})
The ack, the order's new state, the next event and tomorrow's reminder commit as one log entry, or none of them does. That one call replaces the outbox table, the idempotency table and the cron job.
await queen.queue('orders')
.group('fulfillment')
.subscriptionMode('all')
.autoAck(false)
.each()
.limit(1)
.consume(async (msg) => {
const { orderId, customer } = msg.data
await queen.transaction()
.ack(msg, 'completed', { consumerGroup: 'fulfillment' }) // the input is done
.kv.put('orders', `order-${orderId}`, { status: 'paid' }, { ttl: '7d' })
.queue('shipments').partition(msg.partition) // the next event
.push([{ transactionId: `ship-${orderId}`, data: { orderId } }])
.timer('reminders').key(`review-${orderId}`).delay('24h') // a message tomorrow
.payload({ orderId, customer }).schedule()
.commit()
})
Consuming does not delete: the queue is a log, kept for its retention. A new group can start from a point in time and read the same orders again.
await queen.queue('orders')
.group('audit') // a new group, with its own cursor
.subscriptionFrom('2026-10-22T00:00:00Z') // everything pushed from this time on
.each()
.limit(1)
.consume(async (msg) => {
console.log('again:', msg.data)
})
Or read a partition by offset, with no group, lease or ack:
const read = await queen.queue('orders').fetch(['customer-42']) // no group, lease or ack
for (const record of read.get('customer-42').records) {
console.log(record.offset, record.payload)
}
The full guide goes on with locks, stream windows and request/reply over in-memory queues, in every language.
Three GCP nodes, 24 vCPU each, local NVMe. A write is confirmed only after two nodes have written it to disk (fsync). Kafka, Pulsar and Redpanda ran on the same machines.
Queen 2.4 on three GCP c4-standard-24-lssd nodes with local NVMe, 2026-10-15: end to end p99 at 3M msg/s of 256-byte messages and at 1M msg/s of 1 KB messages, the worst load process in seconds 30-60 of 70 (at 3M and 1,000 partitions, the median of five runs). 2.3.0's 3M line read 47 to 78 ms on the same axes.
Full details: queenmq.com/benchmarks
Using a coding agent? Add the MCP server:
claude mcp add --transport http queen https://queenmq.com/mcp
Apache-2.0, see LICENSE.md.
Nothing happens halfway.
Queen MQ is built at Smartness.