Skip to content

jkkicks/cnckit

Repository files navigation

cnckit

A lightweight, modular Python framework for job queuing, scheduling, and automation around LinuxCNC.

Overview

cnckit provides a minimal core with optional integration modules, allowing you to adopt only the functionality you need. From simple local job queues to remote monitoring, API-based control, and more.

Features

Core (dependency-free):

  • Job queue with FIFO/LIFO/priority ordering
  • Scheduler with start/stop/pause controls
  • Machine state abstraction over LinuxCNC
  • Event callbacks for job lifecycle
  • Simulation mode for development

Optional Integrations:

  • REST API for remote monitoring
  • MQTT for messaging and automation
  • WebSocket real-time streaming
  • Robot interfaces (ROS2, TCP)

Quick Start

from cnckit.core import Machine, JobQueue, Scheduler

machine = Machine(simulate=True)  # or Machine() for real LinuxCNC
queue = JobQueue()
scheduler = Scheduler(machine, queue)

queue.add("part1.ngc")
queue.add("part2.ngc", priority=10)

scheduler.run_forever()

Installation

pip install cnckit

With optional integrations:

pip install cnckit[api]      # REST API
pip install cnckit[mqtt]     # MQTT
pip install cnckit[all]      # Everything

Documentation

Development

git clone https://github.com/jkkicks/cnckit.git
cd cnckit
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest

See Contributing for guidelines.

License

MIT

About

A modular, lightweight Python framework for job queuing, integrations, and automation around LinuxCNC.It enables everything from low level simple linuxcnc status extensions, to a batteries included Quickstart experience for beginners

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors