{"id":45766214,"url":"https://github.com/bduggan/termie","last_synced_at":"2026-02-26T01:55:19.547Z","repository":{"id":65310752,"uuid":"201273633","full_name":"bduggan/termie","owner":"bduggan","description":"A console for your console","archived":false,"fork":false,"pushed_at":"2025-01-12T15:27:47.000Z","size":188,"stargazers_count":33,"open_issues_count":0,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-05T23:25:22.005Z","etag":null,"topics":["expect","tmux"],"latest_commit_sha":null,"homepage":"","language":"Raku","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/bduggan.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2019-08-08T14:18:11.000Z","updated_at":"2025-01-12T15:27:51.000Z","dependencies_parsed_at":"2024-11-21T07:18:46.272Z","dependency_job_id":"a4653610-2235-415a-b5af-b7b3de427f99","html_url":"https://github.com/bduggan/termie","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/bduggan/termie","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bduggan%2Ftermie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bduggan%2Ftermie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bduggan%2Ftermie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bduggan%2Ftermie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bduggan","download_url":"https://codeload.github.com/bduggan/termie/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bduggan%2Ftermie/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29848629,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T22:37:40.667Z","status":"ssl_error","status_checked_at":"2026-02-25T22:37:25.960Z","response_time":61,"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":["expect","tmux"],"created_at":"2026-02-26T01:55:18.910Z","updated_at":"2026-02-26T01:55:19.540Z","avatar_url":"https://github.com/bduggan.png","language":"Raku","funding_links":[],"categories":[],"sub_categories":[],"readme":"# termie\n\nA console for your console\n\n[![SparrowCI](https://ci.sparrowhub.io/project/gh-bduggan-termie/badge)](https://ci.sparrowhub.io)\n\n![image](https://user-images.githubusercontent.com/58956/89128554-6e741000-d4c4-11ea-846a-32189f23900c.png)\n\n## Description\n\ntermie (formerly tmeta) is a wrapper for tmux that supports\nsending and receiving data to/from tmux panes.\n\nAnything typed into the bottom pane is sent to the top one, but\nlines that start with a backslash are commands for `termie`.\nYou can type `\\help` to see all possible commands.\n\n(To send a literal leading backslash, either start with a\nspace or start with a double backslash.)\n\n## Why\n\nBecause you get:\n\n- an uncluttered view of your commands separate from the output\n- a local history for commands that are run remotely\n- readline interface independent of the remote console\n- scripting support for programs that require a TTY\n- macros\n- the ability to monitor or capture output\n- other `expect`-like functionality\n- controlled copy-and-paste operations into remote sessions\n\n## Quick start\n\nSee below for installation.\n\nThere are a few different ways to start `termie`.\n\n1. Start `tmux` yourself, then have `termie` split a window and\nstart up in its own pane:\n   ```\n   $ tmux\n   $ termie\n   ```\n\n2. Let `termie` start tmux for you:\n  ```\n  $ termie\n  ```\n\n3. Run a termie script.  This will split and run in another pane.\n   ```\n   $ tmux\n   $ termie script.termie\n   ```\n\nI use the `.termie` suffix for my `termie` scripts.  If you do too, you\nmight like this [vim syntax file](syntax/termie.vim).\n\n## What do I use it with\n\ntermie plays well with REPLs, or any console based\napplication that uses a tty.  For instance, docker, rails\nconsole, interactive ruby shell, the python debugger, the\njupyter console, psql, mysql, regular ssh sessions, local\nterminal sessions, whatever\n\n## More documentation\n\nPlease see the [documentation](https://github.com/bduggan/tmeta/blob/master/doc.md) for a complete list of commands.\n\n## Examples\n\n  Show a list of commands.\n  ```\n  \u003e \\help\n  ```\n\n  Run `date` every 5 seconds until the output contains `02`\n  ```\n  \u003e date\n  \u003e \\repeat\n  \u003e \\await 02\n  ```\n\n  Within a debugger session, send `next` every 2 seconds.\n  ```\n  \u003e next\n  \u003e \\repeat 2\n  ```\n\n  Search the command history for the last occurrence of 'User' using [fzf](https://github.com/junegunn/fzf)\n  (readline command history works too)\n  ```\n  \u003e \\find User\n  ```\n\n  Search the output for \"http\"\n  ```\n  \u003e \\grep http\n  ```\n\n  Send a local file named `bigfile.rb` to a remote rails console\n  ```\n  \u003e \\send bigfile.rb\n  ```\n\n  Same thing, but throttle the copy-paste operation, sending 1 line per second:\n  ```\n  \u003e \\delay 1\n  \u003e \\send bigfile.rb\n  ```\n\n  Similar, but send it to an ssh console by first tarring and base64 encoding\n  and not echoing stdout, and note that 'something' can also be a directory:\n  ```\n  \u003e \\xfer something\n  ```\n\n  Run a command locally, sending each line of output to the remote console:\n  ```\n  \u003e \\do echo date\n  ```\n\n  Run a shell snippet locally, sending each line of output to the remote console:\n  ```\n  \u003e \\dosh for i in `seq 5`; do echo \"ping host-$i\"; done\n  ```\n\n  Start printing the numbers 1 through 100, one per second, but send a ctrl-c\n  when the number 10 is printed:\n  ```\n  \u003e \\enq \\stop\n  queue is now : \\stop\n  \u003e for i in `seq 100`; do echo $i; sleep 1; done\n  # .. starts running in other pane ...\n  \u003e \\await 10\n  Waiting for \"10\"\n  Then I will send:\n  \\stop\n  Done: saw \"10\"\n  starting enqueued command: \\stop\n  ```\n\n  Add an alias `cat` which cats a local file\n  ```\n  \\alias cat \\shell cat\n  ```\n\n  Show a local file (do not send it to the other pane) using the above alias\n  ```\n  \\cat myfile\n  ```\n\n  Edit a file named session.rb, in ~/.termie/scripts\n  ```\n  \\edit session.rb\n  ```\n\n  After running the above, add this to session.rb:\n  ```\n  irb\n\n  \\expect irb(main):001:0\u003e\n\n  \"hello world\"\n\n  \\expect irb(main):002:0\u003e\n\n  exit\n  ```\n\n  Now running\n  ```\n  \\run session.rb\n  ```\n\n  will start the interactive ruby console (irb) and the following\n  session should take place on the top panel:\n\n  ```\n  $ irb\n  irb(main):001:0\u003e \"hello world\"\n  =\u003e \"hello world\"\n  irb(main):002:0\u003e exit\n  $\n  ```\n\n## Installation\n\nPrerequisites: fzf, tmux, libreadline, raku and a few modules\n\n1. Install a recent version of Raku.  The recommended way is to use [rakubrew](https://rakubrew.org).\n\n2. Also install `zef`, the Raku package manager (`rakubrew build-zef`)\n\n3. Install [fzf](https://github.com/junegunn/fzf) and [tmux](https://github.com/tmux/tmux/wiki).\n    (e.g.  `brew install fzf tmux` on os/x)\n\n4.  zef install https://github.com/bduggan/termie.git\n\n## See also\n\n* The [documentation](https://github.com/bduggan/termie/blob/master/doc.md), with links to the source\n* The same [documentation](https://github.com/bduggan/termie/blob/master/help.md) as shown by the `\\help` command\n* This blog article: [https://blog.matatu.org/raku-tmeta](https://blog.matatu.org/raku-tmeta)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbduggan%2Ftermie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbduggan%2Ftermie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbduggan%2Ftermie/lists"}