Your application decides when to schedule. ztick faithfully executes.
Get Started GitHubPeriodic schedulers (cron, systemd timers) trigger work at fixed intervals regardless of the target system’s state. When load is already high, they make it worse.
ztick inverts this logic: the application decides when to schedule a job based on its own state. It sends a SET command over TCP at the moment it sees fit, and ztick faithfully executes it at the requested time.
This is an explicit push model — the application drives, ztick executes.
curl -fsSL https://raw.githubusercontent.com/awf-project/ztick/main/scripts/install.sh | shOr build from source:
git clone https://github.com/awf-project/ztick.git
cd ztick
make buildRun the server with default settings:
zig build runSchedule a job over TCP:
echo "SET deploy.daily $(date +%s%N -d 'tomorrow 03:00')" | nc 127.0.0.1 5678Or define a rule that matches a job prefix and runs a shell command:
echo 'RULE SET deploy.* deploy.* shell "/usr/local/bin/deploy.sh"' | nc 127.0.0.1 5678Your application decides when to schedule. ztick listens on TCP, accepts SET commands with explicit timestamps, and executes them at the requested time — no periodic triggers, no surprise overlaps.
Match jobs by prefix and dispatch to shell commands, direct execve, HTTP webhooks, AWF workflows, AMQP publishers, or Redis commands — all configured through the same protocol.
Append-only logfile with binary length-prefixed framing, automatic background compression, and a memory mode for ephemeral CI runs without disk I/O.
Hexagonal architecture, four-thread design, optional TLS via system OpenSSL, OpenTelemetry export — packaged in a small static binary with explicit memory management.