Kartikeya
Skanda · Murugan — the six-faced commander of the divine armies, born to lead the devas. The engine that marshals and runs a fleet's tasks. Colloquially: Kart.
A standalone, host-agnostic task queue + sandboxed worker. Submit shell (or, optionally, LLM-workflow) tasks to a queue; a worker claims them and runs each in a bubblewrap sandbox with an explicit mount/credential/network policy.
Kartikeya is the execution engine extracted from the Willow fleet
(willow-2.0/core/kart_*) and made to stand on its own — no fleet, no specific
host, no required database server.
Status
Extracted and published. The sandbox/worker/execute core is fully landed
(sandbox.py, worker.py, execute.py, queue.py), tested, and released on
PyPI as kartikeya (0.0.9) — pip install kartikeya, or pip install willow-mcp, which floors it at >=0.0.9,<1.0.0. The cap is a real
compatibility range rather than decoration: bump-minor-pre-major is false
here, so a breaking change cuts 1.0.0 instead of hiding in a minor. The staged lift in docs/DESIGN.md is done
through stage 4; stage 5 (willow-2.0 deleting its core/kart_* copy) is
tracked in willow-mcp#111.
Design goals
- Host-agnostic. The only coupling — "where do tasks live" — is a small
TaskQueueinterface a host implements. Kartikeya owns the sandbox, worker loop, lanes, and command scan; the host owns storage and file roots. - Zero-infra by default. Ships a reference
SqliteTaskQueue, sopip install kartikeyacan execute tasks with no Postgres and no fleet. - Backend-swappable. SQLite (bundled), Postgres, or a custom backend behind the same interface.
- Sandboxed and network-gated. Tasks run network-isolated unless the stored
task text carries a
# allow_netdirective; credentials reach only network- enabled tasks. (Who is allowed to write that directive is the host's call — see the security note indocs/DESIGN.md.)
Install
pip install kartikeya # base: shell tasks, SQLite backend
pip install "kartikeya[postgres]" # + Postgres backend helpers
pip install "kartikeya[llm]" # + LLM-workflow task type
Quickstart
Resource caps (memory + PID limits) prefer a delegated cgroup parent. On a fresh install, run once:
kartikeya setup-cgroup # installs ~/.config/systemd/user/kart.slice
kartikeya cgroup-status # should print ready: /sys/fs/cgroup/...
systemd worker (operative): a shell profile export does not reach a
user-service kart worker. After setup-cgroup succeeds, wire the parent into the
worker environment and restart:
systemctl --user set-environment KART_CGROUP_PARENT=/sys/fs/cgroup/.../kart.slice
systemctl --user restart <your-kart-worker-unit>
(Or set Environment=KART_CGROUP_PARENT=... in a drop-in for the worker unit.)
The export line printed by setup-cgroup is for CLI / interactive runs
only. Without a delegated parent, Kart falls back to task-scoped prlimit/ulimit inside the
sandbox (PID cap by default; virtual-memory cap only with KART_RLIMIT_USE_AS=1).
WILLOW_KART_NO_RLIMIT=1 disables caps entirely (escape hatch only).
Coming with stage 2 — once the worker core lands, this section documents
kartikeya worker end to end (submit → worker runs → poll).
License
MIT © Sean Campbell
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kartikeya-0.0.10.tar.gz.
File metadata
- Download URL: kartikeya-0.0.10.tar.gz
- Upload date:
- Size: 83.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e1408a30af8f2a104506320e3fa3f08b938f82afd81847e03c2cc40fb7e57b4
|
|
| MD5 |
7a95d5d221f3ef46cc4d2b35835bc1ed
|
|
| BLAKE2b-256 |
a5f47b25714a62642db86b76d96d685390e2542cfac5f501ac96ed50b0227858
|
File details
Details for the file kartikeya-0.0.10-py3-none-any.whl.
File metadata
- Download URL: kartikeya-0.0.10-py3-none-any.whl
- Upload date:
- Size: 50.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95236525cccb45109e9fdc277f9765da83149cc4764f3b29d523474e755ce486
|
|
| MD5 |
bb2cf1faf32f371389d5d16df1394640
|
|
| BLAKE2b-256 |
95c6843f364892257170d81a0779fc9c8285b78d110883fe900c3ddb8d3c5a86
|