Skip to main content

tmux session manager

Project description

desto Logo

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.

PyPI version PyPI Downloads Documentation Status Tests Ruff security: bandit gitleaks Contributions welcome


The key features are:

  • One-click session control: Launch, monitor, and stop tmux sessions from your browser.
  • 🐚 Bash & 🐍 Python support: Run both bash (.sh) and Python (.py) scripts seamlessly.
  • Script management: Use your existing scripts, write new ones, edit, save, or delete them directly in the dashboard.
  • ⭐ Favorite commands: Save, organize, and quickly run your frequently used commands with usage tracking and search.
  • Live log viewer: Watch script output in real time and view logs for each session.
  • Live system stats: See real-time CPU, memory, and disk usage at a glance.
  • Scheduling: Schedule scripts or script chains to launch at a specific date and time.
  • Script chaining: Queue multiple scripts to run sequentially in a single session.
  • Session history: Redis integration for persistent session tracking and history. See what is Redis →
  • Scheduled job control: Manage scheduled jobs with a dedicated table—cancel any scheduled job with a click.
  • Session & log cleanup: Clear session history and delete logs for all or selected sessions.
  • 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.
  • Persistent script & log storage: Scripts and logs are saved in dedicated folders for easy access.
  • 🖥️ Command-line interface: Manage sessions, view logs, and control scripts from the terminal with our modern CLI. Learn more →

🎬 Demo

Desto Demo

desto Overview

👀 Dashboard Overview Dashboard Screenshot
🚀 Launch your scripts as `tmux` sessions

When 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.

Your 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:

  1. Name your tmux session
  2. Select one of your scripts
  3. (OPTIONAL) edit and save your changes
  4. Click "Launch"! 🎬
Custom Template
✍️ Write new scripts and save them

If 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.

Custom Template
⭐ Favorite Commands

Save, organize, and quickly run your frequently used commands with usage tracking and search.

Favorites Screenshot
⚙️ Change settings

More settings to be added!

Custom Template
📜 View your script's logs Custom Template
🌙 Dark Mode

Switch to dark mode for comfortable viewing in low-light environments.

Dark Mode Screenshot

⚡ Quick Start with Docker 🐳

The fastest way to ship desto is by using Docker Compose 🚢

You 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 and Docker Compose documentation (or follow your favorite LLM's instructions 😉).

Start desto in just a few steps:

  1. Clone the repository and go to it's main directory

    git clone https://github.com/kalfasyan/desto.git && cd desto
    
  2. Start the application with Docker Compose

    docker compose up -d
    

Done! 🎉

You’re all set—your desto dashboard is now running at:
🌐 http://localhost:8809

🚀 Essential Docker & Docker Compose Commands
# Start the app in background (Docker Compose)
docker compose up -d
# View logs (Docker Compose)
docker compose logs -f
# Stop and remove services (Docker Compose)
docker compose down
# Rebuild and start (Docker Compose)
docker compose up -d --build
# Run the container directly (plain Docker)
docker run -d -p 8809:8809 \
  -v $PWD/desto_scripts:/app/desto_scripts \
  -v $PWD/desto_logs:/app/desto_logs \
  --name desto-dashboard \
  desto:latest
# View logs (plain Docker)
docker logs -f desto-dashboard
# Stop and remove the container (plain Docker)
docker stop desto-dashboard && docker rm desto-dashboard

🖥️ CLI & 📊 Dashboard Installation with uv or pip

If you are not familiar with uv, you may visit uv's official website for more information.

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.

Requirements

  • Python 3.11+
  • tmux
  • at (for scheduling features)

Check pyproject.toml

Installation Steps

  1. Install tmux and at

    Instructions for different package managers
    • Debian/Ubuntu
      sudo apt install tmux at
      
    • Almalinux/Fedora
      sudo dnf install tmux at
      
    • Arch Linux
      sudo pacman -S tmux at
      

    Note: The at package is required for scheduling features. If you don't plan to use script scheduling, you can skip installing at.

  2. Install desto

    Installation Steps
    • (Recommended) With uv, simply run:

      uv add desto
      

      This will install desto in your project ✅
      Or if you don't have a project yet, you can set up everything with uv:

      1. Install uv by following the instructions on the official site.

      2. Create and set up your project:

        mkdir myproject && cd myproject
        uv init
        uv venv
        source .venv/bin/activate
        uv add desto
        

        Done!

    • With pip:

      pip install desto
      
  3. Run the Application

    desto
    

🔄 Auto-start on Boot (systemd)

If you want desto to start automatically when your system boots, you can install a systemd service using the CLI. This works for non-Docker installations.

# Install as a user service (recommended)
desto-cli service install

# Or install as a system service (requires sudo)
sudo desto-cli service install --system

This ensures the dashboard is always available after a reboot.

[!NOTE] Docker users: If you are using Docker Compose, desto is already configured to auto-start via the restart: always policy in docker-compose.yml. No further action is needed.

🎉 Done!
Open your browser and visit: http://localhost:8809 🚀

Global desto Installation as a uv Tool (includes CLI)

# Install desto CLI globally
uv tool install desto

# Or install from source
cd /path/to/desto
uv tool install . --force

This installs two executables:

  • desto - Web dashboard
  • desto-cli - Command-line interface (work in progress)
Quick CLI Usage

Terminal Screenshot

# Check system status
desto-cli doctor
# List all sessions
desto-cli sessions list
# Start a new session
desto-cli sessions start "my-task" "python my_script.py"
# View session logs
desto-cli sessions logs "my-task"
# Kill a session
desto-cli sessions kill "my-task"
# List all scripts
desto-cli scripts list
# Create new script
desto-cli scripts create "my_script" --type python
# Edit script in $EDITOR
desto-cli scripts edit "my_script"
# Run script in tmux session
desto-cli scripts run "my_script"
# Run script directly
desto-cli scripts run "my_script" --direct

📖 Full CLI Documentation →

The 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.


License

Shield: CC BY 4.0

This work is licensed under a Creative Commons Attribution 4.0 International License.

CC BY 4.0


TODO

  • Explore possibility to pause processes running inside a session

desto makes handling tmux sessions and running scripts approachable for everyone—no terminal gymnastics required!

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

desto-0.5.1.tar.gz (21.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

desto-0.5.1-py3-none-any.whl (87.0 kB view details)

Uploaded Python 3

File details

Details for the file desto-0.5.1.tar.gz.

File metadata

  • Download URL: desto-0.5.1.tar.gz
  • Upload date:
  • Size: 21.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for desto-0.5.1.tar.gz
Algorithm Hash digest
SHA256 a9ad284bb71757dff400d8741a97e60bfe2aa31adab921f1a95ba1d32fd0214c
MD5 07bcb141afea89c24cf9b7d940bdb0b8
BLAKE2b-256 eb9622255b4e9fdb8dfbed4a44c9daf24fbfd4aea35a219e035d737076f41aed

See more details on using hashes here.

Provenance

The following attestation bundles were made for desto-0.5.1.tar.gz:

Publisher: publish.yml on kalfasyan/desto

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file desto-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: desto-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 87.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for desto-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 88155223b2635e8d4466dbcf9edf6e49558ec1c6f6f9a55898422bf520a8bc81
MD5 125f27c06fdc9156be72b7416ed2b9ef
BLAKE2b-256 a6499d85ef8b28e11ad3332fb688d10f467d703e915ed477cf2e69f298652097

See more details on using hashes here.

Provenance

The following attestation bundles were made for desto-0.5.1-py3-none-any.whl:

Publisher: publish.yml on kalfasyan/desto

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page