# Autotasker Autotasker is a small server-side job runner and scheduler. If you have a small infrastructure and you want to run task or small workflows and you want to supervise via a small web GUI, then autotasker is probably for you. Autotasker free software licenced under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html). ## Philosophy and architecture - Unix-like - Can be configured with a single YAML file. - Light web GUI - Sqlite DB ## Getting started - Create a config file to define your tasks. - Deploy the server with docker or using git clone + cargo install binary + systemd service. - Enjoy! ## Features roadmap - [x] List the tasks availables. - [x] Run tasks in background. - [x] Store the logs and tasks runs in a sqlite DB. - [x] Trigger task via webhook, with a webhook token and debouncing. - [x] Schedule tasks (CRON-like). - [x] Run task command via ssh - [ ] OpenMetrics exporter to alert when a task failed. - [ ] External alerting when a task failed. - [ ] Content negociation with JSON or HTML. - [ ] OAuth2 support for admin. ## Vocabulary - `Task` is a configured command to be run. - `Executor` is the part of the code that handle task run. A new executor is spawned for each TaskRun. - `TaskRun` refer to a singular task run. ## Deploy & Usage ### Standard You can use standard rust and cargo command to run the server. You can start the daemon with `autotasker --config /path/to/config --database /path/to/database.db`. #### Requirements If you wish to use the remote host ssh feature, you must have openssh-client installed on the host. ### Docker Build the alpine image: just docker-build Initialize the db: just docker-init-db Run with config and db volume: just docker-run ## Getting started on development This project use a `justfile`. [just](https://just.systems/man/en/) is a handy way to save and run project-specific commands. ## Built with - [Axum](https://lib.rs/crates/axum) for web server. - [Tera](https://lib.rs/crates/tera) for templating. - [Sqlx](https://lib.rs/crates/sqlx) to interact with Sqlite. - [Sqlite](https://sqlite.org/) for storing state and logs.