Schedule Claude Code jobs with a beautiful TUI or headless mode
Project description
claun
Schedule Claude Code jobs with a TUI or headless mode. Sometimes systemd is just overkill. Pronounced "Klon" like the guitar pedal.
Installation
pip install claun-tui
Quick Start
# Launch TUI (default)
claun
# Launch TUI with pre-filled command
claun -c "Review our metrics from the past hour for anomalies"
# Run in headless mode
claun -H -c "Update bug list from Linear MCP and fix" -m 60
# See what would run without executing
claun --dry-run -c "test command"
Features
- Beautiful TUI: Single-page interface with all controls visible - no menu diving
- Headless mode: Run as a background service with terminal output
- Flexible scheduling: Days of week, hour ranges, minute intervals
- Claude flags: Pass any flags to claude (like
--resumefor session persistence) - Simple logging: Automatic log files with browseable history
TUI Mode
Launch with claun to get an interactive interface with:
- Command input field
- Optional Claude flags (e.g.,
--resume <session-id>or--model sonnet) - Day-of-week toggles (M T W T F S S)
- Minute interval selector (1, 5, 15, or 60 minutes)
- Big countdown clock to next run
- Pause/Resume control
- Live output log
Keyboard shortcuts:
q- Quitp- Pause/Resumer- Run nowc- Clear log
Headless Mode
Run without TUI for background/automated use:
# Every 15 minutes (default)
claun -H -c "Check for issues"
# Hourly during work hours
claun -H -c "Status update" --hours "9am-5pm" -m 60
# Weekdays only
claun -H -c "Daily standup" --weekdays -m 60
Session Persistence
To resume a previous Claude Code session, use the --flags option to pass --resume:
# First, note your session ID from a previous run
# Then resume it:
claun -c "Continue working on the feature" -f "--resume abc123-def456"
# In the TUI, enter in the "Claude Flags" field:
# --resume abc123-def456
You can also pass other claude flags:
# Use a specific model
claun -c "Pull and fix bugs from the Linear MCP, run /code-simplifier and push PRs" -f "--model opus"
# Enable web search
claun -c "What is the score of the Niners/Seahawks game?" -f "--allowedTools WebSearch"
# Combine multiple flags
claun -c "Fix the next bug on the bug list" -f "--resume abc123 --model sonnet"
CLI Options
Options:
-c, --command TEXT Claude Code command to run
-f, --flags TEXT Extra flags for claude (e.g., '--resume abc123')
-H, --headless Run in headless mode (no TUI)
-d, --days TEXT Days to run (mon,tue,wed,thu,fri,sat,sun)
--weekdays Run only on weekdays (mon-fri)
--weekends Run only on weekends (sat-sun)
--hours TEXT Hour range (e.g., '9-17' or '9am-5pm')
-m, --minutes [1|5|15|60] Minute interval
-l, --log-path PATH Directory for log files
--log-id TEXT Optional ID prefix for log filenames
-P, --paused Start in paused state
--once Run once immediately and exit
--dry-run Show schedule without executing
-v, --version Show version
Subcommands
Browse Logs
# List recent logs in current directory
claun logs
# List logs from specific path
claun logs --path /var/log/claun
# Limit to 10 most recent
claun logs -n 10
Log Files
Logs are saved as: [log_id_]claun_YYYYMMDD_HHMMSS_microseconds.txt
Examples:
claun_20260112_143022_123456.txtmyproject_claun_20260112_143022_789012.txt(with --log-id)
License
GPL-3.0
Project details
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 claun_tui-0.2.0.tar.gz.
File metadata
- Download URL: claun_tui-0.2.0.tar.gz
- Upload date:
- Size: 41.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ba1f57412ae1f9c805212d53f4d37fe0fc8942426ebb89889cb7e139b9896e4
|
|
| MD5 |
406f4276aae4e6d1aa6761bd7ffeb42a
|
|
| BLAKE2b-256 |
e01c1a5eaf4a84d870551e7f49bac4fe69a9c91a23b8b6635f63c433b6223423
|
Provenance
The following attestation bundles were made for claun_tui-0.2.0.tar.gz:
Publisher:
publish.yml on nsmith/claun
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
claun_tui-0.2.0.tar.gz -
Subject digest:
1ba1f57412ae1f9c805212d53f4d37fe0fc8942426ebb89889cb7e139b9896e4 - Sigstore transparency entry: 825540659
- Sigstore integration time:
-
Permalink:
nsmith/claun@44a00fc5a2d8bfee9ef4ddee9a17987f0933d7ee -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/nsmith
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@44a00fc5a2d8bfee9ef4ddee9a17987f0933d7ee -
Trigger Event:
push
-
Statement type:
File details
Details for the file claun_tui-0.2.0-py3-none-any.whl.
File metadata
- Download URL: claun_tui-0.2.0-py3-none-any.whl
- Upload date:
- Size: 35.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72497dcb97351c4d6812c0d15c01f089e49da44a82ee334ae3c9fdfd28e79e7e
|
|
| MD5 |
e9e497432b41e113de3c1a5431951af8
|
|
| BLAKE2b-256 |
265844eba575978ec1d81ec05d6e2a2a73c370ac9a3d2378c437307998de8515
|
Provenance
The following attestation bundles were made for claun_tui-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on nsmith/claun
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
claun_tui-0.2.0-py3-none-any.whl -
Subject digest:
72497dcb97351c4d6812c0d15c01f089e49da44a82ee334ae3c9fdfd28e79e7e - Sigstore transparency entry: 825540703
- Sigstore integration time:
-
Permalink:
nsmith/claun@44a00fc5a2d8bfee9ef4ddee9a17987f0933d7ee -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/nsmith
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@44a00fc5a2d8bfee9ef4ddee9a17987f0933d7ee -
Trigger Event:
push
-
Statement type: