{"id":44018987,"url":"https://github.com/ck3mp3r/laio-cli","last_synced_at":"2026-02-07T16:06:25.059Z","repository":{"id":152441256,"uuid":"625966379","full_name":"ck3mp3r/laio-cli","owner":"ck3mp3r","description":"Flexbox-inspired layout manager for tmux that creates and manages complex sessions from YAML configuration files. 🍉","archived":false,"fork":false,"pushed_at":"2026-02-02T06:22:33.000Z","size":1378,"stargazers_count":29,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-02T18:21:28.198Z","etag":null,"topics":["flexbox","nix","rust","session-management","tmux"],"latest_commit_sha":null,"homepage":"https://laio.sh/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ck3mp3r.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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":"2023-04-10T14:05:47.000Z","updated_at":"2026-02-02T06:22:35.000Z","dependencies_parsed_at":"2023-09-03T19:25:44.347Z","dependency_job_id":"29580d5d-7c98-48ad-bf88-a6fcbf0cd2e2","html_url":"https://github.com/ck3mp3r/laio-cli","commit_stats":null,"previous_names":["ck3mp3r/rmux-cli","ck3mp3r/laio-cli"],"tags_count":75,"template":false,"template_full_name":null,"purl":"pkg:github/ck3mp3r/laio-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ck3mp3r%2Flaio-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ck3mp3r%2Flaio-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ck3mp3r%2Flaio-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ck3mp3r%2Flaio-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ck3mp3r","download_url":"https://codeload.github.com/ck3mp3r/laio-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ck3mp3r%2Flaio-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29199519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T14:35:27.868Z","status":"ssl_error","status_checked_at":"2026-02-07T14:25:51.081Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["flexbox","nix","rust","session-management","tmux"],"created_at":"2026-02-07T16:06:24.480Z","updated_at":"2026-02-07T16:06:25.040Z","avatar_url":"https://github.com/ck3mp3r.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[\u003cimg src=\"./media/laio.svg\" width=\"450\" /\u003e](https://laio.sh)\n\nA simple, flexbox-inspired layout and session manager for tmux. Define complex multi-window, multi-pane layouts in YAML and manage session lifecycles with startup/shutdown hooks.\n\n**[Full Documentation](https://laio.sh/docs/getting-started/installing)**\n\n## Features\n\n- **Flexbox-inspired layouts** - Define pane splits with `flex` and `flex_direction` (row/column)\n- **Session lifecycle management** - Startup/shutdown commands and embedded scripts\n- **Dual configuration modes** - Global configs (`~/.config/laio`) or local project configs (`.laio.yaml`)\n- **Session serialization** - Export existing tmux sessions to YAML format\n- **Focus \u0026 zoom control** - Pin focus and zoom states in configuration\n- **Environment \u0026 shell customization** - Per-session env vars and shell overrides\n- **Tmux native** - Built for tmux (experimental Zellij support available)\n\n## Quick Start\n\n```bash\n# Install (see Installation section)\nnix profile install \"github:ck3mp3r/laio-cli\"\n\n# Create a new config\nlaio config create myproject\n\n# Start the session\nlaio start myproject\n\n# List sessions and configs\nlaio list\n```\n\n## Installation\n\nSupported platforms: Linux and macOS (aarch64, x86_64)\n\n### Nix\n\n[![built with nix](https://builtwithnix.org/badge.svg)](https://builtwithnix.org)\n```bash\nnix profile install \"github:ck3mp3r/laio-cli\"\n```\n\n### Homebrew\n\n```bash\nbrew tap ck3mp3r/laio-cli https://github.com/ck3mp3r/laio-cli/\nbrew install laio\n```\n\n### Binary Download\n\nDownload from the [Release Page](https://github.com/ck3mp3r/laio-cli/releases) and add to `PATH`.\n\n## Development\n\n### Prerequisites\n\n- Rust 1.70+ (or use Nix for reproducible builds)\n- tmux 3.0+\n\n### Build\n\n```bash\ncargo build --release\n# Binary at: target/release/laio\n```\n\n### Test\n\n```bash\ncargo test\n```\n\n### Development Environment (Nix)\n\n```bash\nnix develop\n# or use direnv\ndirenv allow\n```\n\n### Configuration Schema\n\nThe YAML configuration schema is defined in `src/common/config/schema.json`. Use this for editor integration (LSP, validation).\n\n## Usage\n\n### Commands\n\n```bash\nlaio start [name]              # Start session (interactive picker if name omitted)\nlaio start --file config.yaml  # Start from specific file\nlaio stop [name]               # Stop session\nlaio stop --all                # Stop all laio-managed sessions\nlaio list                      # List sessions and configs\nlaio config create \u003cname\u003e      # Create new config\nlaio config create --copy src  # Create from existing config\nlaio config edit \u003cname\u003e        # Edit config in $EDITOR\nlaio config link \u003cname\u003e        # Symlink .laio.yaml to global config\nlaio session yaml              # Export current tmux session to YAML\nlaio completion \u003cshell\u003e        # Generate shell completions\n```\n\nSee `laio --help` or [full documentation](https://laio.sh/docs/getting-started/basics) for all options.\n\n### Configuration\n\nConfigurations are YAML files defining session layouts:\n\n```yaml\nname: myproject\npath: /path/to/myproject\n\n# Session lifecycle hooks\nstartup:\n  - command: docker-compose\n    args: [up, -d]\n\nstartup_script: |\n  #!/usr/bin/env bash\n  echo \"Session starting...\"\n\nshutdown:\n  - command: docker-compose\n    args: [down]\n\nshutdown_script: |\n  #!/usr/bin/env bash\n  echo \"Cleaning up...\"\n\n# Session environment\nshell: /bin/zsh\nenv:\n  NODE_ENV: development\n  DEBUG: \"app:*\"\n\n# Window and pane layout\nwindows:\n  - name: editor\n    panes:\n      - name: nvim\n        commands:\n          - command: $EDITOR\n\n  - name: dev\n    flex_direction: row  # vertical split (panes side-by-side)\n    panes:\n      - flex: 2\n        flex_direction: column  # horizontal split (panes stacked)\n        panes:\n          - flex: 3\n            path: ./src\n            focus: true  # initial focus\n            commands:\n              - command: npm\n                args: [run, dev]\n          - flex: 1\n            zoom: true  # start zoomed\n            script: |\n              #!/usr/bin/env bash\n              tail -f logs/app.log\n      - flex: 1\n        style: bg=blue,fg=white  # tmux pane styling\n```\n\n**Key features:**\n- `flex`: Proportional sizing (e.g., `flex: 2` = twice the size of `flex: 1`)\n- `flex_direction`: `row` (vertical split, side-by-side) or `column` (horizontal split, stacked)\n- `focus`: Pin initial cursor position\n- `zoom`: Start pane in zoomed state\n- `commands`: Sequential command execution\n- `script`: Inline script blocks\n- `path`: Working directory (absolute or relative to session root)\n\nSee [configuration docs](https://laio.sh/docs/configuration/yaml-reference) for all options.\n\n## Project Configurations\n\nCreate `.laio.yaml` in any project directory:\n\n```bash\ncd myproject\nlaio config create  # creates .laio.yaml\nlaio start          # auto-detects and uses .laio.yaml\n```\n\nLink local configs to global namespace:\n\n```bash\nlaio config link myproject  # symlinks .laio.yaml -\u003e ~/.config/laio/myproject.yaml\n```\n\n## Session Serialization\n\nExport existing tmux sessions to YAML:\n\n```bash\n# From within a tmux session\nlaio session yaml \u003e ~/.config/laio/newsession.yaml\n```\n\n## Usage Restrictions\n\nUse of this software is strictly prohibited for any organization, company, or government directly or indirectly involved in aiding or abetting the genocide and atrocities committed against the Palestinian people in Gaza. Only individuals and entities unaffiliated with such actions are permitted to use the software.\n\n## License\n\nSee [LICENSE.md](LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fck3mp3r%2Flaio-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fck3mp3r%2Flaio-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fck3mp3r%2Flaio-cli/lists"}