{"id":37160279,"url":"https://github.com/kevinms/tmux-compose","last_synced_at":"2026-01-14T19:00:46.076Z","repository":{"id":54568899,"uuid":"193806238","full_name":"kevinms/tmux-compose","owner":"kevinms","description":"Define and run tmux sessions.","archived":false,"fork":false,"pushed_at":"2021-02-10T06:47:04.000Z","size":18,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T08:00:58.659Z","etag":null,"topics":["compose","go","orchestration","pane","tmux","window"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kevinms.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-26T01:15:45.000Z","updated_at":"2023-11-15T04:48:59.000Z","dependencies_parsed_at":"2022-08-13T20:00:53.780Z","dependency_job_id":null,"html_url":"https://github.com/kevinms/tmux-compose","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/kevinms/tmux-compose","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinms%2Ftmux-compose","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinms%2Ftmux-compose/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinms%2Ftmux-compose/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinms%2Ftmux-compose/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kevinms","download_url":"https://codeload.github.com/kevinms/tmux-compose/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevinms%2Ftmux-compose/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28431147,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["compose","go","orchestration","pane","tmux","window"],"created_at":"2026-01-14T19:00:40.017Z","updated_at":"2026-01-14T19:00:46.052Z","avatar_url":"https://github.com/kevinms.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tmux-compose\nOrchestrate the creation of tmux sessions with dependencies between commands in windows and panes.\n\nThis project is like a mash-up of docker-compose and teamocil/tmuxinator for tmux, hence the name \"tmux-compose\".\n\nYou create YAML config files that detail what windows and panes should be created and any commands that should be run in them. Then, you can setup dependencies between panes and windows to orchestrate the order in which the commands are run.\n\n- [Example Usage](#exampleyml)\n- [Installation](#installation)\n  - [Build from source](#build-from-source)\n- [Project Options](#project)\n- [Windows Options](#windows)\n- [Panes Options](#panes)\n\n\n## example.yml\n```yaml\ndir: ~/project\nsessions:\n  - name: example\n    windows:\n\n      # Start a database\n      - name: database\n        panes:\n          - cmd: service postgresql start\n            readycheck:\n              test: pg_isready -h localhost -p 5432 -U postgres\n              interval: 3s\n              retries: 3\n\n      # Run a program that must start after the database is ready\n      - panes:\n          - cmd: ./myprogram\n            depends_on: [\"database\"]\n```\n\nBring up a tmux session:\n```bash\ntmux-compose -f example.yml up\n```\n\nTeardown a tmux session:\n```bash\ntmux-compose -f example.yml down\n```\n\n## Installation\n\n##### Prebuilt binaries for stable releases\nPrebuilt binaries for multiple platforms can be downloaded from the [releases page](https://github.com/kevinms/tmux-compose/releases).\n\n##### Automated build from source\ntmux-compose was built with Go. If you already have Go setup, you `go get` the utility:\n\n```bash\ngo get github.com/kevinms/tmux-compose\n```\n\n##### Manually build from source\n\n```bash\ngit clone https://github.com/kevinms/tmux-compose.git\ncd tmux-compose\ngo install\n```\n\nGo code can easily compile for other OSes, but this has only been tested on Linux.\n\n## Project\nExample showing all options for the root node of the config file\n```yaml\ndir: /path/to/project\nup_pre_cmd: (date; echo start) \u003e run.log\nup_post_cmd: (date; echo done) \u003e\u003e run.log\ndown_pre_cmd: touch example.tmp\ndown_post_cmd: rm example.tmp\nsessions:\n  - name: example\n    windows:\n      - name: code\n        panes:\n        - cmd: vim\n      - panes:\n        - cmd: top\n```\n\n## Sessions\nExample showing all options being used for a window:\n```yaml\nsessions:\n  - name: example\n    dir: ~/project\n    readycheck:\n      test: ping -c1 domain.net\n      interval: 3s\n      retries: 10\n    depends_on: [\"thing1\", \"thing2\"]\n    windows:\n      - name: code\n        panes:\n        - cmd: vim\n      - panes:\n        - cmd: top\n```\n\n## Windows\nExample showing all options being used for a window:\n```yaml\nsessions:\n  - name: example\n    windows:\n      - name: My Window\n        dir: ~/project\n        focus: true\n        layout: main-vertical\n        depends_on: [\"thing1\", \"thing2\"]\n        panes:\n          - cmd: vim\n          - cmd: sleep 5\n```\n\n## Panes\nExample showing all options being used for a pane:\n```yaml\nsessions:\n  - name: example\n    windows:\n      - panes:\n        - name: My Pane\n          dir: ~/project\n          cmd: python -m SimpleHTTPServer 8000\n          focus: true\n          readycheck:\n            test: ping -c1 domain.net\n            interval: 3s\n            retries: 10\n          depends_on: [\"thing1\", \"thing2\"]\n```\n\n## Directly Inspired By:\n\n* docker-compose\n* teamocil\n* tmuxinator\n* tmuxstart\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevinms%2Ftmux-compose","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkevinms%2Ftmux-compose","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevinms%2Ftmux-compose/lists"}