{"slug": "vterm", "name": "vterm", "category": "terminal", "category_name": "Terminal and shell", "description": "", "recommenders": 6, "commenters": 12, "warners": 3, "score": 3.162, "rising": -0.64, "first": "2025-11-03", "latest": "2026-08-27", "why": "My main use case is emacsclient and vterm as a terminal multiplexer, in place of something like tmux or screen", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 6, "neutral": 2, "compare": 1, "warn": 3}, "spark": [0, 1, 0, 1, 0, 2, 1, 0, 0, 1, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "My main use case is emacsclient and vterm as a terminal multiplexer, in place of something like tmux or screen", "kind": "", "icon": false, "domain": null, "github_repo": "github.com/akermu/emacs-libvterm", "official_url": "https://github.com/akermu/emacs-libvterm", "pricing": "", "aliases": ["vterm"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 791492274, "item_id": 49468267, "url": "https://news.ycombinator.com/item?id=49468267", "by": "internet_points", "date": "2026-08-27", "stance": "recommend", "quote": "(or vterm, or eat)", "excerpt": "Never heard of that one. The most popular ways for agent stuff seems to be https://github.com/xenodium/agent-shell , or just opening a terminal in emacs and using claude code. If you want to run it through an emacs terminal, consider using https://github.com/dakra/ghostel#ghostel (or vterm, or eat)", "context": "", "use_case": "", "switched_from": "", "story": "Emacs 31: An unofficial guide to Markdown-ts-mode"}, {"id": 767649716, "item_id": 47978107, "url": "https://news.ycombinator.com/item?id=47978107", "by": "wwarner", "date": "2026-05-01", "stance": "recommend", "quote": "Strengths: magit, wgrep, vterm", "excerpt": "I run emacs without graphics from this docker image i maintain https://hub.docker.com/r/wwarner/emacs-native I just use emacs for programming, not note taking or email reading or the other things people love it for. Strengths: magit, wgrep, vterm, buffer management, plugins & packaging. Weaknesses, irritations, embarrassments: yaml-mode, responsiveness, overlays & mini-buffers.", "context": "", "use_case": "", "switched_from": "", "story": "I have officially retired from Emacs"}, {"id": 764054129, "item_id": 47753383, "url": "https://news.ycombinator.com/item?id=47753383", "by": "stebalien", "date": "2026-04-13", "stance": "recommend", "quote": "you can use something like vterm", "excerpt": "My experience is that Emacs wants to be your everything, and works best if you let it. Have you tried putting your terminals inside of Emacs instead of the other way around? * If you need a \"real\" terminal emulator, you can use something like vterm (https://github.com/akermu/emacs-libvterm/). * If you need to be able to attach/detach Emacs sessions on remote machines, you can use something like dtach or abducto (http", "context": "", "use_case": "terminal emulator in Emacs", "switched_from": "", "story": "Make Tmux Pretty and Usable"}, {"id": 761847264, "item_id": 47615454, "url": "https://news.ycombinator.com/item?id=47615454", "by": "dmm", "date": "2026-04-02", "stance": "recommend", "quote": "My main use case is emacsclient and vterm as a terminal multiplexer, in place of something like tmux or screen", "excerpt": "My main use case is emacsclient and vterm as a terminal multiplexer, in place of something like tmux or screen. But even locally I use vterm. A terminal is just text, why wouldn't I manipulate it with emacs? At any time you can switch to `copy-mode` and it behaves like a read-only text buffer that you can manipulate as you please.", "context": "", "use_case": "terminal inside Emacs", "switched_from": "", "story": "Emacs-libgterm: Terminal emulator for Emacs using libghostty-vt"}, {"id": 755072225, "item_id": 47192014, "url": "https://news.ycombinator.com/item?id=47192014", "by": "goku12", "date": "2026-02-28", "stance": "recommend", "quote": "I use vterm in Emacs for visual commands like nvim and htop.", "excerpt": "How does eat detect a visual command in eshell? I use vterm in Emacs for visual commands like nvim and htop. But it's triggered manually with a simple custom prefix command (just 'v') added to the actual command. I wonder if that trigger could be automated. It sounds from your description like vterm is faster than eat. If so, a similar automatic trigger for vterm could be very beneficial.", "context": "", "use_case": "", "switched_from": "", "story": "Eschewing Zshell for Emacs Shell (2014)"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 790960113, "item_id": 49435007, "url": "https://news.ycombinator.com/item?id=49435007", "by": "diegoeche", "date": "2026-08-25", "stance": "warn", "quote": "had way too many issues where emacs/vterm was the culprit", "excerpt": "I love emacs. I used emacs for 20 years. But I haven't used it as much since moving to codex/claude. Even with vterm, can't really use TUIs that well inside IMO. Or at least, had way too many issues where emacs/vterm was the culprit", "context": "", "use_case": "running TUIs inside Emacs", "switched_from": "", "story": "What's new in Emacs 31.1"}, {"id": 782161761, "item_id": 48885110, "url": "https://news.ycombinator.com/item?id=48885110", "by": "guskel", "date": "2026-07-12", "stance": "warn", "quote": "I was struggling with vterm", "excerpt": "Thank you so much for building this. I've been wanting something just like this and I'm trying it now and it's amazing. I was struggling with vterm and now this might become my daily driver.", "context": "", "use_case": "Emacs terminal emulator", "switched_from": "", "story": "Ghostel.el: Terminal emulator powered by libghostty"}, {"id": 782094673, "item_id": 48880917, "url": "https://news.ycombinator.com/item?id=48880917", "by": "jdormit", "date": "2026-07-12", "stance": "warn", "quote": "I recently switched from vterm to ghostel", "excerpt": "I recently switched from vterm to ghostel, and it is generally much, much better - noticeably faster (e.g. fancy TUI apps that try to refresh the whole terminal every frame actually work), more reliable input handling, and a nicer ELisp API. That being said, there are still some rough edges. Sometimes it fails to properly clear the terminal, leaving junk at the top of the buffer before the currrent prompt line. And o", "context": "", "use_case": "Emacs terminal emulator", "switched_from": "", "story": "Ghostel.el: Terminal emulator powered by libghostty"}]}], "who": [{"by": "krowek", "context": "Long time vim/neovim user", "url": "https://news.ycombinator.com/item?id=45797867", "date": "2025-11-03"}], "tags": [], "use_cases": ["terminal inside emacs", "emacs terminal emulator", "terminal emulator in emacs", "running tuis inside emacs", "terminal in emacs"], "compared": [{"slug": "ghostel", "name": "Ghostel", "co": 9, "switched_from": 0, "switched_to": 6}, {"slug": "gnu-emacs", "name": "GNU Emacs", "co": 8, "switched_from": 0, "switched_to": 0}, {"slug": "eat", "name": "EAT", "co": 5, "switched_from": 0, "switched_to": 0}, {"slug": "magit", "name": "Magit", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "claude-code", "name": "Claude Code", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=49464543", "title": "Emacs 31: An unofficial guide to Markdown-ts-mode", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=48879504", "title": "Ghostel.el: Terminal emulator powered by libghostty", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49419252", "title": "What's new in Emacs 31.1", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48584135", "title": "Emacs 31 Is Around the Corner: The Changes I'm Daily Driving", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47906651", "title": "I have officially retired from Emacs", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47752819", "title": "Make Tmux Pretty and Usable", "mentions": 1}], "sentiment_by_month": {"2025-11": {"neutral": 1}, "2025-12": {"recommend": 1}, "2026-01": {}, "2026-02": {"recommend": 1}, "2026-03": {}, "2026-04": {"recommend": 2}, "2026-05": {"recommend": 1}, "2026-06": {"compare": 1}, "2026-07": {"warn": 2}, "2026-08": {"warn": 1, "neutral": 1, "recommend": 1}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 791492274, "item_id": 49468267, "url": "https://news.ycombinator.com/item?id=49468267", "by": "internet_points", "date": "2026-08-27", "stance": "recommend", "quote": "(or vterm, or eat)", "excerpt": "Never heard of that one. The most popular ways for agent stuff seems to be https://github.com/xenodium/agent-shell , or just opening a terminal in emacs and using claude code. If you want to run it through an emacs terminal, consider using https://github.com/dakra/ghostel#ghostel (or vterm, or eat)", "context": "", "use_case": "", "switched_from": "", "story": "Emacs 31: An unofficial guide to Markdown-ts-mode"}, {"id": 791457954, "item_id": 49466122, "url": "https://news.ycombinator.com/item?id=49466122", "by": "sebastianavina", "date": "2026-08-27", "stance": "neutral", "quote": "I run vterm inside emacs, and claude code inside vterm.", "excerpt": "I use windows 11, wsl2, WezTerm. emacs -nw directly on the shell. its like working on a linux computer, but from windows. I run vterm inside emacs, and claude code inside vterm. I have special commands for extracting file routes, and flow between dired and magit. Everything runs like magic. I also have copilot-chat and copilot-mode installed. From time to time I use it to review what claude has done, or to chat a lit", "context": "", "use_case": "terminal inside Emacs", "switched_from": "", "story": "Emacs 31: An unofficial guide to Markdown-ts-mode"}, {"id": 790960113, "item_id": 49435007, "url": "https://news.ycombinator.com/item?id=49435007", "by": "diegoeche", "date": "2026-08-25", "stance": "warn", "quote": "had way too many issues where emacs/vterm was the culprit", "excerpt": "I love emacs. I used emacs for 20 years. But I haven't used it as much since moving to codex/claude. Even with vterm, can't really use TUIs that well inside IMO. Or at least, had way too many issues where emacs/vterm was the culprit", "context": "", "use_case": "running TUIs inside Emacs", "switched_from": "", "story": "What's new in Emacs 31.1"}, {"id": 782161761, "item_id": 48885110, "url": "https://news.ycombinator.com/item?id=48885110", "by": "guskel", "date": "2026-07-12", "stance": "warn", "quote": "I was struggling with vterm", "excerpt": "Thank you so much for building this. I've been wanting something just like this and I'm trying it now and it's amazing. I was struggling with vterm and now this might become my daily driver.", "context": "", "use_case": "Emacs terminal emulator", "switched_from": "", "story": "Ghostel.el: Terminal emulator powered by libghostty"}, {"id": 782094673, "item_id": 48880917, "url": "https://news.ycombinator.com/item?id=48880917", "by": "jdormit", "date": "2026-07-12", "stance": "warn", "quote": "I recently switched from vterm to ghostel", "excerpt": "I recently switched from vterm to ghostel, and it is generally much, much better - noticeably faster (e.g. fancy TUI apps that try to refresh the whole terminal every frame actually work), more reliable input handling, and a nicer ELisp API. That being said, there are still some rough edges. Sometimes it fails to properly clear the terminal, leaving junk at the top of the buffer before the currrent prompt line. And o", "context": "", "use_case": "Emacs terminal emulator", "switched_from": "", "story": "Ghostel.el: Terminal emulator powered by libghostty"}, {"id": 777475681, "item_id": 48592230, "url": "https://news.ycombinator.com/item?id=48592230", "by": "dakra", "date": "2026-06-18", "stance": "compare", "quote": "some things that make Ghostel better than vterm", "excerpt": "Just to expand a bit on \"bunch of other things\". You can see a vterm vs eat feature comparison here: https://dakra.github.io/ghostel/#ghostel-vs-vterm Besides the performance and what baokaola already mentioned some things that make Ghostel better than vterm especially when working with those cli agents are: - proper handling of resizing windows - progress reports (you get a spinner in the modeline when claude thinks", "context": "", "use_case": "", "switched_from": "", "story": "Emacs 31 Is Around the Corner: The Changes I'm Daily Driving"}, {"id": 767649716, "item_id": 47978107, "url": "https://news.ycombinator.com/item?id=47978107", "by": "wwarner", "date": "2026-05-01", "stance": "recommend", "quote": "Strengths: magit, wgrep, vterm", "excerpt": "I run emacs without graphics from this docker image i maintain https://hub.docker.com/r/wwarner/emacs-native I just use emacs for programming, not note taking or email reading or the other things people love it for. Strengths: magit, wgrep, vterm, buffer management, plugins & packaging. Weaknesses, irritations, embarrassments: yaml-mode, responsiveness, overlays & mini-buffers.", "context": "", "use_case": "", "switched_from": "", "story": "I have officially retired from Emacs"}, {"id": 764054129, "item_id": 47753383, "url": "https://news.ycombinator.com/item?id=47753383", "by": "stebalien", "date": "2026-04-13", "stance": "recommend", "quote": "you can use something like vterm", "excerpt": "My experience is that Emacs wants to be your everything, and works best if you let it. Have you tried putting your terminals inside of Emacs instead of the other way around? * If you need a \"real\" terminal emulator, you can use something like vterm (https://github.com/akermu/emacs-libvterm/). * If you need to be able to attach/detach Emacs sessions on remote machines, you can use something like dtach or abducto (http", "context": "", "use_case": "terminal emulator in Emacs", "switched_from": "", "story": "Make Tmux Pretty and Usable"}, {"id": 761847264, "item_id": 47615454, "url": "https://news.ycombinator.com/item?id=47615454", "by": "dmm", "date": "2026-04-02", "stance": "recommend", "quote": "My main use case is emacsclient and vterm as a terminal multiplexer, in place of something like tmux or screen", "excerpt": "My main use case is emacsclient and vterm as a terminal multiplexer, in place of something like tmux or screen. But even locally I use vterm. A terminal is just text, why wouldn't I manipulate it with emacs? At any time you can switch to `copy-mode` and it behaves like a read-only text buffer that you can manipulate as you please.", "context": "", "use_case": "terminal inside Emacs", "switched_from": "", "story": "Emacs-libgterm: Terminal emulator for Emacs using libghostty-vt"}, {"id": 755072225, "item_id": 47192014, "url": "https://news.ycombinator.com/item?id=47192014", "by": "goku12", "date": "2026-02-28", "stance": "recommend", "quote": "I use vterm in Emacs for visual commands like nvim and htop.", "excerpt": "How does eat detect a visual command in eshell? I use vterm in Emacs for visual commands like nvim and htop. But it's triggered manually with a simple custom prefix command (just 'v') added to the actual command. I wonder if that trigger could be automated. It sounds from your description like vterm is faster than eat. If so, a similar automatic trigger for vterm could be very beneficial.", "context": "", "use_case": "", "switched_from": "", "story": "Eschewing Zshell for Emacs Shell (2014)"}, {"id": 739097760, "item_id": 46193610, "url": "https://news.ycombinator.com/item?id=46193610", "by": "kccqzy", "date": "2025-12-08", "stance": "recommend", "quote": "I use vterm which I believe prides itself for being the fastest terminal emulator inside Emacs", "excerpt": "I use vterm which I believe prides itself for being the fastest terminal emulator inside Emacs. The eat README says 1.5 times faster than eat. This matters a lot to me because the proprietary build/test tool at work likes to dump the stack trace for every failing unit test.", "context": "", "use_case": "terminal emulator in Emacs", "switched_from": "", "story": "Emacs is my new window manager (2015)"}, {"id": 732765877, "item_id": 45797867, "url": "https://news.ycombinator.com/item?id=45797867", "by": "krowek", "date": "2025-11-03", "stance": "neutral", "quote": "project.el, eglot, LSP things, helm, corfu, vterm, flycheck", "excerpt": "I was in the same boat until a couple of months ago. Long time vim/neovim user, used fennel to configure it lastly, but I wanted to see what Emacs has to offer to compare. I started by reading Mastering Emacs by Mickey Petersen and from there start adding things that I felt I needed (configure key bindings, project.el, eglot, LSP things, helm, corfu, vterm, flycheck, etc) I still have things to do, but I'm not in a h", "context": "Long time vim/neovim user", "use_case": "terminal in Emacs", "switched_from": "", "story": "Ask HN: Where to begin with \"modern\" Emacs?"}]}