Cronboard is a terminal-based dashboard built with Textual that provides a keyboard-driven interface for managing cron jobs on both local machines and remote servers via SSH. It solves the problem of fragmented, error-prone crontab management by offering a visual, interactive interface without modifying the underlying system crontab format, ensuring compatibility with existing tools and backups.
Built with Python, Textual, Paramiko, and python-crontab, Cronboard runs entirely in the terminal, supports SSH key and password authentication, and integrates with system cron via standard crontab commands. It can be installed via Homebrew, pip, uv, Nix, or AUR, and requires Python 3.13+ and a working crontab system.
What You Get
- Terminal-based TUI - A keyboard-driven interface built with Textual that displays cron jobs in a table with columns for ID, expression, command, last run, next run, and status — no web UI required.
- Remote SSH Management - Connect to remote servers using SSH keys or passwords to view and edit their crontabs, with automatic detection of known_hosts and support for sudo-based user switching.
- Human-readable Cron Expression Parser - Real-time translation of cron expressions (e.g., “0 * * * *”) into plain English (e.g., “Every hour”) using Cron Descriptor for immediate validation and clarity.
- Path Autocompletion - Tab-based autocompletion for file paths in command fields, starting from the user’s home directory to reduce typing errors and speed up job creation.
- Pause and Resume Cron Jobs - Toggle job status between Active and Paused without deleting them, preserving configuration while temporarily halting execution.
- Search and Filter Jobs - Case-insensitive keyword search across all cron job fields (ID, command, expression) to quickly locate specific jobs in large crontab lists.
Common Use Cases
- Managing multiple server cron jobs - A DevOps engineer uses Cronboard to view and update cron jobs across 10+ Linux servers via SSH without logging into each one individually.
- Debugging misbehaving scheduled tasks - A sysadmin pauses a cron job to test a fix, observes its next run time, and resumes it after validation — all within a single terminal session.
- Onboarding new team members to cron workflows - A team lead demonstrates Cronboard to junior engineers to show how cron jobs are structured, validated, and managed without editing raw crontab files.
- Automating local development tasks - A developer creates a cron job to auto-pull git repos every hour with path autocompletion, then pauses it during weekends to reduce resource usage.
Under The Hood
Architecture
- Monolithic design with CronBoard class tightly coupling UI state, configuration loading, and business logic, violating single responsibility principles
- Widget components lack formal interfaces or dependency injection, resulting in direct instantiation and tight interdependencies
- No service or repository layer; cron operations are embedded directly in UI components, mixing data access with presentation
- Encryption logic is cleanly isolated using Fernet, though key management remains hardcoded
- Configuration and theming use ad-hoc file I/O without abstraction, reducing flexibility and testability
- Direct reliance on Textual framework with no decoupling between UI and system-level cron operations
Tech Stack
- Python 3.13+ backend with Textual for terminal UI and textual-autocomplete for interactive input
- Cron management powered by python-crontab and croniter, with cron-descriptor for human-readable syntax rendering
- Secure remote server access via Paramiko and password hashing with bcrypt
- Build and packaging managed through setuptools with pyproject.toml and CLI entrypoint
- Testing leverages pytest with async support and mocking, though coverage remains limited
- Development workflow includes TCSS styling, TOML configuration, and EditorConfig for consistency
Code Quality
- Limited test coverage focused on unit tests with heavy mocking, lacking integration or end-to-end scenarios
- Fragmented code organization with scattered test files and no shared utilities or patterns
- Minimal error handling using bare try/except blocks, leading to opaque failure modes
- Inconsistent naming conventions and non-semantic UI element IDs reduce readability
- Absence of type hints and static analysis tools increases risk of runtime errors
- No linting, code quality tooling, or CI checks to enforce standards or best practices
What Makes It Unique
- Real-time cron expression visualization with dynamic parsing provides live interpretation in the UI
- Seamless SSH-integrated crontab management enables local control of distributed cron jobs
- Intelligent path autocomplete with directory caching and dotfile filtering optimizes TUI input
- Deep TUI component composition creates a native, keyboard-first cron editor with modal workflows
- Unified job lifecycle controls and persistent state transform cron management into an interactive dashboard
- Rich text rendering of cron tables with live status updates redefines terminal-based job monitoring