Quick Start
Start the daemon with quicx start, pull the Java client from Maven Central, and submit your first task. End-to-end in under a minute.
- Step01
Start the daemon
Quicx needs a configuration file to know which TCP port to bind and how to carve up the PMAD pool. The installer writes a sensible default to
~/.config/quicx/quicx.conf.~ $user@host ~ $ quicx start --config /etc/quicx/quicx.conf config loaded: /etc/quicx/quicx.conf quicx v1.0.2 starting port: 16381 classes: 32 64 128 256 512 1024 quicx listening on port 16381 [kqueue] quicx cli socket: /tmp/quicx.sock - Step02
Add the Java client to your build
The client lives on Maven Central under
dev.quicx:quicx-client. It’s a tiny jar (no transitive dependencies) that speaks the Quicx binary protocol directly.pom.xml<dependency> <groupId>dev.quicx</groupId> <artifactId>quicx-client</artifactId> <version>1.0.0</version> </dependency> - Step03
Submit your first task
QuicxClientis a stateless, thread-safe producer handle. Everysubmit()opens a connection, sendsMSG_SUBMIT, reads the acknowledgment, and closes.Producer.javaimport dev.quicx.QuicxClient; public class Producer { public static void main(String[] args) throws Exception { try (QuicxClient client = new QuicxClient("localhost", 16381)) { int taskId = client.submit( "send_email", "{\"to\":\"user@gmail.com\"}" ); System.out.println("accepted task id = " + taskId); } } } - Step04
Run a worker
QuicxWorkerconnects, announces itself withMSG_READYand then blocks receivingMSG_TASKframes. The worker reconnects automatically on daemon restarts.EmailWorker.javaimport dev.quicx.QuicxWorker; public class EmailWorker { public static void main(String[] args) throws Exception { new QuicxWorker("localhost", 16381) .handle("send_email", payload -> { String body = new String(payload, "UTF-8"); System.out.println("delivering: " + body); // ... do the work ... }) .start(); // blocks — runs until the process is killed } }
MSG_SUBMIT with a 6‑byte header and a typed payload, then waited for a 4‑byte task_id. The daemon allocated every scratch buffer out of the PMAD pool — no malloc, no GC pause — and handed the task to an idle worker. One daemon. No moving parts.