# \> termcourse: read & post on Discourse instances from the terminal

**URL:** https://meta.discourse.org/t/termcourse-read-post-on-discourse-instances-from-the-terminal/395285
**Category:** Extras
**Tags:** experimental
**Created:** [5 בפברואר,‏ 2026,‏ 1:50pm UTC](https://meta.discourse.org/t/termcourse-read-post-on-discourse-instances-from-the-terminal/395285 "2026-02-05T13:50:49Z")
**Posts on this page:** 7
**Page:** 2

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [13 במרץ,‏ 2026,‏ 9:56am UTC](https://meta.discourse.org/t/termcourse-read-post-on-discourse-instances-from-the-terminal/395285/21 "2026-03-13T09:56:55Z")

</div>

[https://github.com/merefield/termcourse/pull/4](https://github.com/merefield/termcourse/pull/4)

[https://github.com/merefield/termcourse/pull/5](https://github.com/merefield/termcourse/pull/5)

@Canapin new = `c` (compose) now 😅 as `n` is for notifications.

I might tackle localisation next …

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [13 במרץ,‏ 2026,‏ 1:38pm UTC](https://meta.discourse.org/t/termcourse-read-post-on-discourse-instances-from-the-terminal/395285/22 "2026-03-13T13:38:14Z")

</div>

localisation is in

currently support for `es`, `fr`, `de` & `en`.

happy to accept PRs for more, but pretty straightforward to do this so just tell me if you are using it and what language you’d like.

Also tell me if any are horribly wrong! 😅

[https://github.com/merefield/termcourse/pull/6](https://github.com/merefield/termcourse/pull/6)

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [19 במרץ,‏ 2026,‏ 7:45am UTC](https://meta.discourse.org/t/termcourse-read-post-on-discourse-instances-from-the-terminal/395285/23 "2026-03-19T07:45:07Z")

</div>

I pushed a caching update that reduces the number of calls made to the server and leverages updates from MessageBus.

This should both significantly improve performance _and_ reduce the risk of hitting rate limits.

[https://github.com/merefield/termcourse/pull/7](https://github.com/merefield/termcourse/pull/7)

let me know if you hit any issues.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [19 במרץ,‏ 2026,‏ 1:48pm UTC](https://meta.discourse.org/t/termcourse-read-post-on-discourse-instances-from-the-terminal/395285/24 "2026-03-19T13:48:03Z")

</div>

I’ve reworked the MessageBus code and the subscription system - notification badges should now be updated on the fly more reliably.

Topics should get new posts in “realtime” now without having to refresh the view.

Note you have to login using username/password for this to work as requires a session cookie.

[https://github.com/merefield/termcourse/pull/8](https://github.com/merefield/termcourse/pull/8)

You can still use API key access, but you will miss out on the “realtime” topic updates

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [19 במרץ,‏ 2026,‏ 2:24pm UTC](https://meta.discourse.org/t/termcourse-read-post-on-discourse-instances-from-the-terminal/395285/25 "2026-03-19T14:24:43Z")

</div>

Nice, when will you start working on a web interface to improve usability? Oh, wait a minute.

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [22 באפריל,‏ 2026,‏ 3:09pm UTC](https://meta.discourse.org/t/termcourse-read-post-on-discourse-instances-from-the-terminal/395285/26 "2026-04-22T15:09:59Z")

</div>

Termcourse now supports hi-res images on expansion where a terminal supports chafa, sixel and magick.

[https://github.com/merefield/termcourse/pull/10](https://github.com/merefield/termcourse/pull/10)

In short, if you have Windows terminal and have installed chafa and imagemagick, it’s got you covered:

 ![Screenshot 2026-04-22 160604](https://global.discourse-cdn.com/meta/original/4X/4/f/0/4f0764fd0cdba8d69b6a6732c90a5f6bec626d9c.png)

 ![Screenshot 2026-04-22 160548](https://global.discourse-cdn.com/meta/original/4X/1/9/7/1978dd56a1dad532371d2ed99345a4062c46c1da.png)

_unfortunately_ as with everything Apple, their support for open source projects is a bit slow, so you can’t use this feature with native MacOS terminal.app atm.

See: [https://www.arewesixelyet.com/](https://www.arewesixelyet.com/)

You might find a better terminal for macos …

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [17 באוגוסט,‏ 2026,‏ 8:41pm UTC](https://meta.discourse.org/t/termcourse-read-post-on-discourse-instances-from-the-terminal/395285/27 "2026-08-17T20:41:49Z")

</div>

Well …

… I migrated `> termcourse` to Go

> <https://github.com/merefield/termcourse/pull/12>
>
> \## What changed
> 
> \- replace the Ruby implementation with a Go 1.26.6 application
> …- preserve the complete browsing, posting, authentication, realtime MessageBus, localization, theming, search, notification, and image feature set
> \- move terminal rendering onto the current Charm v2 stack
> \- add responsive incremental rendering, stronger color handling, and Kitty-first inline/fullscreen images with colored Chafa fallback
> \- retain the existing locale and screenshot assets
> \- replace Bundler/Ruby CI with formatting, vet, race-test, and build checks for Go
> 
> \## Why
> 
> The Go migration provides a single compiled executable, lower runtime overhead, stronger concurrency and lifecycle handling, and substantially more terminal behavior delegated to maintained Charm components instead of bespoke rendering code.
> 
> \## User impact
> 
> Existing configuration, credentials, themes, languages, navigation, posting, likes, search, notifications, realtime updates, and image controls remain available. The build and installation workflow changes from Ruby/Bundler to Go 1.26.6.
> 
> \## Validation
> 
> \- \`go test ./...\`
> \- \`go test -race ./...\`
> \- \`go vet ./...\`
> \- \`go mod tidy -diff\`
> \- \`gofmt\` clean
> \- Linux amd64 build
> \- Windows amd64 cross-build
> \- macOS arm64 cross-build

## **Why**

The Go migration provides a single compiled executable, lower runtime overhead, stronger concurrency and lifecycle handling, and substantially more terminal behavior delegated to maintained Charm components instead of bespoke rendering code.

This brings a big cleanup of the interface and allows mouse control, even on the topic progress bar!

Installation/run instructions updated here: [GitHub - merefield/termcourse: A terminal based client to access Discourse instances, supporting API keys, username/password (and with MFA token) · GitHub](https://github.com/merefield/termcourse#install-and-run)

 ![image](https://global.discourse-cdn.com/meta/original/4X/2/8/6/2864d986fc152c793d39abd7e2668b727c03d9a1.png)

[Previous page](https://meta.discourse.org/t/termcourse-read-post-on-discourse-instances-from-the-terminal/395285.md?page=1)
