{"id":29415462,"url":"https://github.com/kalfasyan/desto","last_synced_at":"2026-02-21T19:16:49.460Z","repository":{"id":302949381,"uuid":"981015392","full_name":"kalfasyan/desto","owner":"kalfasyan","description":"web-interface and cli to manage python and shell scripts in tmux sessions","archived":false,"fork":false,"pushed_at":"2026-02-17T06:52:47.000Z","size":32659,"stargazers_count":96,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-17T12:14:36.997Z","etag":null,"topics":["bash-script-manager","cli","command-line-tool","docker","nicegui","session-management","tmux","ui","uv"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kalfasyan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-10T06:32:28.000Z","updated_at":"2026-02-17T06:52:44.000Z","dependencies_parsed_at":"2026-02-07T17:01:16.808Z","dependency_job_id":null,"html_url":"https://github.com/kalfasyan/desto","commit_stats":null,"previous_names":["kalfasyan/desto"],"tags_count":51,"template":false,"template_full_name":null,"purl":"pkg:github/kalfasyan/desto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kalfasyan%2Fdesto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kalfasyan%2Fdesto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kalfasyan%2Fdesto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kalfasyan%2Fdesto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kalfasyan","download_url":"https://codeload.github.com/kalfasyan/desto/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kalfasyan%2Fdesto/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29690899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T18:18:25.093Z","status":"ssl_error","status_checked_at":"2026-02-21T18:18:22.435Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash-script-manager","cli","command-line-tool","docker","nicegui","session-management","tmux","ui","uv"],"created_at":"2025-07-11T16:44:03.208Z","updated_at":"2026-02-21T19:16:49.443Z","avatar_url":"https://github.com/kalfasyan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/logo.png\" alt=\"desto Logo\" title=\"desto Logo\" width=\"300\" style=\"border:2px solid #ccc; border-radius:6px;\"/\u003e  \n\u003c/p\u003e  \n\n\n**desto** lets you run and manage your bash and Python scripts in the background (inside `tmux` sessions) through a simple web dashboard. Launch scripts, monitor their and your system's status, view live logs, and control sessions—all from your browser.  \n\n[![PyPI version](https://badge.fury.io/py/desto.svg)](https://badge.fury.io/py/desto)\n[![PyPI Downloads](https://static.pepy.tech/personalized-badge/desto?period=total\u0026units=INTERNATIONAL_SYSTEM\u0026left_color=BLACK\u0026right_color=GREEN\u0026left_text=downloads)](https://pepy.tech/projects/desto)\n[![Documentation Status](https://readthedocs.org/projects/desto/badge/?version=latest)](https://desto.readthedocs.io/)\n[![Tests](https://github.com/kalfasyan/desto/actions/workflows/ci.yml/badge.svg)](https://github.com/kalfasyan/desto/actions/workflows/ci.yml)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)\n[![gitleaks](https://img.shields.io/badge/protected%20by-gitleaks-blue)](https://github.com/gitleaks/gitleaks-action)\n![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)\n\n---\n\nThe key features are:  \n\n- **One-click session control:** Launch, monitor, and stop `tmux` sessions from your browser.\n- **🐚 Bash \u0026 🐍 Python support:** Run both bash (`.sh`) and Python (`.py`) scripts seamlessly.\n- **Script management:** Use your existing scripts, write new ones, edit, save, or delete them directly in the dashboard.\n- **⭐ Favorite commands:** Save, organize, and quickly run your frequently used commands with usage tracking and search.\n- **Live log viewer:** Watch script output in real time and view logs for each session.\n- **Live system stats:** See real-time CPU, memory, and disk usage at a glance.\n- **Scheduling:** Schedule scripts or script chains to launch at a specific date and time.\n- **Script chaining:** Queue multiple scripts to run sequentially in a single session.\n- **Session history:** [Redis](https://github.com/redis/redis-py) integration for persistent session tracking and history. [See what is Redis →](https://redis.io/about/)\n- **Scheduled job control:** Manage scheduled jobs with a dedicated table—cancel any scheduled job with a click.\n- **Session \u0026 log cleanup:** Clear session history and delete logs for all or selected sessions.\n- **Notifications:** Optional Pushbullet notifications for job/session finishes — set the `DESTO_PUSHBULLET_API_KEY` environment variable or add the key in Settings to receive desktop/mobile pushes when jobs complete.\n- **Persistent script \u0026 log storage:** Scripts and logs are saved in dedicated folders for easy access.\n- **🖥️ Command-line interface:** Manage sessions, view logs, and control scripts from the terminal with our modern CLI. [Learn more →](https://desto.readthedocs.io/user-guide/cli/)\n  \n  \n\u003cstrong\u003e🎬 Demo\u003c/strong\u003e\n\n\u003cimg src=\"docs/images/desto_demo.gif\" alt=\"Desto Demo\" title=\"Desto in Action\" width=\"700\" style=\"border:2px solid #ccc; border-radius:6px; margin-bottom:24px;\"/\u003e\n\n## ✨ `desto` Overview\n\n\u003cdiv align=\"left\"\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e👀 Dashboard Overview\u003c/strong\u003e\u003c/summary\u003e\n\n\u003cimg src=\"docs/images/dashboard.png\" alt=\"Dashboard Screenshot\" title=\"Desto Dashboard\" width=\"700\" style=\"border:2px solid #ccc; border-radius:6px; margin-bottom:24px;\"/\u003e\n\n\u003c/details\u003e  \n      \n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🚀 Launch your scripts as `tmux` sessions\u003c/strong\u003e\u003c/summary\u003e\n\nWhen you start `desto`, it creates `desto_scripts/` and `desto_logs/` folders in your current directory. Want to use your own locations? Just change these in the settings, or set the `DESTO_SCRIPTS_DIR` and `DESTO_LOGS_DIR` environment variables.\n\nYour scripts show up automatically—no setup needed. Both `.sh` (bash) and `.py` (Python) scripts are supported with automatic detection and appropriate execution. Ready to launch? Just:\n\n1. Name your `tmux` session\n2. Select one of your scripts\n3. (OPTIONAL) edit and save your changes\n4. Click \"Launch\"! 🎬\n\n\u003cimg src=\"docs/images/launch_script.png\" alt=\"Custom Template\" title=\"Launch Script\" width=\"300\" style=\"border:2px solid #ccc; border-radius:6px;\"/\u003e\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e✍️ Write new scripts and save them\u003c/strong\u003e\u003c/summary\u003e\n\nIf you want to compose a new script, you can do it right here, or simply just paste the output of your favorite LLM :) Choose between bash and Python templates with syntax highlighting and smart defaults.\n\n\u003cimg src=\"docs/images/write_new_script.png\" alt=\"Custom Template\" title=\"Write New\" width=\"300\" style=\"border:2px solid #ccc; border-radius:6px;\"/\u003e\n\n\u003c/details\u003e\n  \n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e⚙️ Change settings\u003c/strong\u003e\u003c/summary\u003e\n\nMore settings to be added! \n\n\u003cimg src=\"docs/images/settings.png\" alt=\"Custom Template\" title=\"Change Settings\" width=\"300\" style=\"border:2px solid #ccc; border-radius:6px;\"/\u003e\n\u003c/details\u003e\n  \n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e📜 View your script's logs\u003c/strong\u003e\u003c/summary\u003e\n\n\u003cimg src=\"docs/images/view_logs.png\" alt=\"Custom Template\" title=\"View Logs\" width=\"300\" style=\"border:2px solid #ccc; border-radius:6px;\"/\u003e\n\n\u003c/details\u003e\n\n\u003c/div\u003e  \n\n## ⚡ Quick Start with Docker 🐳  \n\nThe fastest way to ship `desto` is by using Docker Compose 🚢  \n\nYou only need Docker and Docker Compose installed on your machine. If you don't have them yet, you can find installation instructions on the [Docker website](https://docs.docker.com/get-docker/) and [Docker Compose documentation](https://docs.docker.com/compose/install/) (or follow your favorite LLM's instructions 😉).  \n\nStart `desto` in just a few steps: \n\n1. **Clone the repository and go to it's main directory**\n    ```bash\n    git clone https://github.com/kalfasyan/desto.git \u0026\u0026 cd desto\n    ```\n\n2. **Start the application with Docker Compose**\n    ```bash\n    docker compose up -d\n    ```\n\n✅ **Done!** 🎉  \n\nYou’re all set—your desto dashboard is now running at:  \n🌐 [http://localhost:8809](http://localhost:8809)\n\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🚀 Essential Docker \u0026 Docker Compose Commands\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\n# Start the app in background (Docker Compose)\ndocker compose up -d\n```\n\n```bash\n# View logs (Docker Compose)\ndocker compose logs -f\n```\n\n```bash\n# Stop and remove services (Docker Compose)\ndocker compose down\n```\n\n```bash\n# Rebuild and start (Docker Compose)\ndocker compose up -d --build\n```\n\n```bash\n# Run the container directly (plain Docker)\ndocker run -d -p 8809:8809 \\\n  -v $PWD/desto_scripts:/app/desto_scripts \\\n  -v $PWD/desto_logs:/app/desto_logs \\\n  --name desto-dashboard \\\n  desto:latest\n```\n\n```bash\n# View logs (plain Docker)\ndocker logs -f desto-dashboard\n```\n\n```bash\n# Stop and remove the container (plain Docker)\ndocker stop desto-dashboard \u0026\u0026 docker rm desto-dashboard\n```\n\u003c/details\u003e\n\n## 🖥️ CLI \u0026 📊 Dashboard Installation with `uv` or `pip`  \n\nIf you are not familiar with `uv`, you may visit [uv's official website](https://docs.astral.sh/uv/getting-started/installation/) for more information.\n\n`uv` is a super-fast Python package manager and virtual environment tool, written in Rust. It helps you manage dependencies, create isolated environments, and install packages much faster than traditional tools like pip.  \n\n### Requirements\n\n- Python 3.11+\n- [tmux](https://github.com/tmux/tmux)\n- [at](https://en.wikipedia.org/wiki/At_(command)) (for scheduling features)\n  \nCheck [`pyproject.toml`](pyproject.toml)\n\n### Installation Steps\n\n1. **Install `tmux` and `at`**  \n   \u003cdetails\u003e\n   \u003csummary\u003eInstructions for different package managers\u003c/summary\u003e\n\n   - **Debian/Ubuntu**  \n     ```bash\n     sudo apt install tmux at\n     ```\n   - **Almalinux/Fedora**  \n     ```bash\n     sudo dnf install tmux at\n     ```\n   - **Arch Linux**  \n     ```bash\n     sudo pacman -S tmux at\n     ```\n   \n   **Note:** The `at` package is required for scheduling features. If you don't plan to use script scheduling, you can skip installing `at`.\n   \u003c/details\u003e\n\n2. **Install `desto`**  \n   \u003cdetails\u003e\n   \u003csummary\u003eInstallation Steps\u003c/summary\u003e\n\n    - (Recommended) With [uv](https://github.com/astral-sh/uv), simply run:\n      ```bash\n      uv add desto\n      ```\n      This will install desto in your project ✅  \n      Or if you don't have a project yet, you can set up everything with [`uv`](https://docs.astral.sh/uv/getting-started/installation/):\n\n      1. [Install `uv`](https://docs.astral.sh/uv/getting-started/installation/) by following the instructions on the official site.\n      2. Create and set up your project:\n\n          ```bash\n          mkdir myproject \u0026\u0026 cd myproject\n          uv init\n          uv venv\n          source .venv/bin/activate\n          uv add desto\n          ```\n          Done!\n    - With pip:\n      ```bash\n      pip install desto\n      ```\n    \u003c/details\u003e\n\n3. **Run the Application**  \n   ```bash\n   desto\n   ```\n\n🎉 **Done!**  \nOpen your browser and visit: [http://localhost:8809](http://localhost:8809) 🚀\n\n### Global `desto` Installation as a `uv` Tool (includes CLI)\n\n```bash\n# Install desto CLI globally\nuv tool install desto\n\n# Or install from source\ncd /path/to/desto\nuv tool install . --force\n```\n\nThis installs two executables:\n- `desto` - Web dashboard  \n- `desto-cli` - Command-line interface (work in progress)\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eQuick CLI Usage\u003c/strong\u003e\u003c/summary\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/terminal.png\" alt=\"Terminal Screenshot\" title=\"Desto CLI\" width=\"100\" style=\"border:0px solid #ccc; border-radius:1px; margin-bottom:1px;\"/\u003e\n\u003c/p\u003e\n\n```bash\n# Check system status\ndesto-cli doctor\n```\n\n```bash\n# List all sessions\ndesto-cli sessions list\n```\n\n```bash\n# Start a new session\ndesto-cli sessions start \"my-task\" \"python my_script.py\"\n```\n\n```bash\n# View session logs\ndesto-cli sessions logs \"my-task\"\n```\n\n```bash\n# Kill a session\ndesto-cli sessions kill \"my-task\"\n```\n\n```bash\n# List all scripts\ndesto-cli scripts list\n```\n\n```bash\n# Create new script\ndesto-cli scripts create \"my_script\" --type python\n```\n\n```bash\n# Edit script in $EDITOR\ndesto-cli scripts edit \"my_script\"\n```\n\n```bash\n# Run script in tmux session\ndesto-cli scripts run \"my_script\"\n```\n\n```bash\n# Run script directly\ndesto-cli scripts run \"my_script\" --direct\n```\n\n\u003c/details\u003e\n\n\n**📖 [Full CLI Documentation →](https://desto.readthedocs.io/user-guide/cli/)**\n\nThe CLI provides the same functionality as the web interface but optimized for terminal use, including rich formatting, real-time log viewing, and comprehensive session management.\n\n\n---\n\n## License\n\nShield: [![CC BY 4.0][cc-by-shield]][cc-by]\n\nThis work is licensed under a\n[Creative Commons Attribution 4.0 International License][cc-by].\n\n[![CC BY 4.0][cc-by-image]][cc-by]\n\n[cc-by]: http://creativecommons.org/licenses/by/4.0/\n[cc-by-image]: https://i.creativecommons.org/l/by/4.0/88x31.png\n[cc-by-shield]: https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg\n\n---\n\n## TODO\n\n- [ ] Explore possibility to pause processes running inside a session\n- [ ] Add dark mode/theme toggle for the dashboard UI\n\n---\n\n**desto** makes handling tmux sessions and running scripts approachable for everyone—no terminal gymnastics required!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkalfasyan%2Fdesto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkalfasyan%2Fdesto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkalfasyan%2Fdesto/lists"}