Skip to main content

ophix-tasks

Centralized task scheduling for your server fleet — part of Ophix, a modular, self-hosted fleet management platform.

If your servers have accumulated a scattered mess of forgotten cron jobs, systemd timers nobody remembers writing, and scripts nobody's sure are still needed — ophix-tasks gives you one place to define, audit, and manage scheduled tasks across every host, instead of SSHing into each one to find out what's actually running.

Operators define named Schedules containing task definitions in one central admin panel. Each host runs a lightweight client that pulls its assigned tasks and applies them to the host's native scheduler (cron or systemd) — so execution stays exactly where it's always lived, just no longer invisible.


Installation

See installation.md for the full step-by-step guide — service user, TLS setup, the guided installer, and getting the service running under nginx and systemd.


Concepts

Schedule

A named collection of tasks — the artifact clients are linked to. A host may hold access to multiple Schedules simultaneously, receiving tasks from all of them.

Scheduler

A named target scheduling system (cron, systemd, wts, etc.), seeded by migration. Each Scheduler carries a validator class that checks the interval field is in the format that scheduler expects (a cron expression for cron, a systemd calendar spec for systemd), plus operator-facing help text explaining that format. Operators can disable a Scheduler they don't support; disabled Schedulers cannot be selected on new tasks.

Each Scheduled Task is assigned to exactly one Scheduler via its scheduler field. Tier 2 clients use this to pick up only the tasks meant for them — ophix-task-crontab applies cron-scheduled tasks, ophix-task-systemd applies systemd-scheduled ones.

Scheduled Task

An individual task within a Schedule. Each task has exactly one scheduling mode:

Field Description
scheduler Target scheduling system (see Scheduler above) — governs the expected interval format
run_at One-off: exact date and time to execute
interval Recurring: an expression in the format the assigned scheduler expects (e.g. 0 2 * * * for cron)

Optional time bounds enforced server-side:

Field Description
starts_at Do not return this task before this date and time
ends_at Stop returning this task after this date and time

State flags:

Field Description
enabled Disabled tasks are not returned by the server at all
paused Paused tasks are still returned, but Tier 2 clients write them as commented-out/disabled entries rather than active ones

Output handling controls where stdout and stderr go when the task runs:

Field Options
stdout_handling inherit · report · null · file
stderr_handling inherit · report · null · merge · file
log_file Append path (used when handling is file)

description is an optional note written as a comment above the cron entry.

A Schedule itself also has an enabled/paused pair with the same meaning, applying to every task within it.

Client Schedule Access

Links a Client to a Schedule. Flags: enabled (client can read tasks from this Schedule), can_update (client may create tasks via the API), can_delete (gated by ENABLE_ARTIFACT_DELETE in .env), paused (pause this Schedule for this client only, without affecting other clients), notes (free-text operator note).


API

GET /api/tasks/

Returns a flat JSON array of tasks for the authenticated client across all linked Schedules. Disabled tasks are included so Tier 2 clients can write them as commented-out entries.

Optional filter: ?schedule=<name> — restrict to a single named Schedule.

POST /api/tasks/

Create a task in a Schedule. Requires can_update on the access record. Skips silently if a task with the same command already exists.

POST /api/tasks/<id>/report/

Store execution output reported by task-client report. Creates a Task Execution Log entry visible in the admin.


Admin

Schedules — primary view. Manage tasks inline, assign client access.

Scheduled Tasks — cross-schedule view. Filter, enable/disable, and edit tasks without opening individual Schedules.

Task Execution Logs — read-only log of output reported by fleet clients.


Docs import

ophix-manage update_docs --include-app-docs ophix.core,ophix_tasks,ophix_docs

Metadata

Release files for ophix-tasks 2026.10.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ophix-tasks 2026.10.8.1
File Size Uploaded
ophix_tasks-2026.10.8.1.tar.gz 48.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ophix-tasks 2026.10.8.1
File Interpreter ABI Platform
ophix_tasks-2026.10.8.1-py3-none-any.whl Python 3 none any Details

Total release size: 103.5 kB

Release files / ophix_tasks-2026.10.8.1.tar.gz

Download URL ophix_tasks-2026.10.8.1.tar.gz
Size 48.4 kB
Tags Source
SHA-256 checksum
How to use checksums
12ea414a1ee20c7a21750339ea9258eff9b844f9123eceec76f87b0f5439e391
BLAKE2b-256 checksum
How to use checksums
2b3514a16683909bc13f49cf56a1a620bf44a656253dd71d6ec80de9bd458ba9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / ophix_tasks-2026.10.8.1-py3-none-any.whl

Download URL ophix_tasks-2026.10.8.1-py3-none-any.whl
Size 55.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
73385d99ab2e1f5520d691fc9d4bae1ea57703f48d16fb14e0c0f1b5999495e9
BLAKE2b-256 checksum
How to use checksums
1419922d1fa35d7ba40560fa203e259fc91969da6c79696b88e5e6ed6bd502da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release history Release notifications | RSS feed

This release

2026.10.8.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page