Gophercon Latam 2025 - Serving TUIs over SSH using Go ✨
My talk at Gophercon Latam 2025, showing a brief history of terminals, an introduction to ANSI …
This version introduces the new Homebrew Casks feature, an experimental MCP server, plus many other small improvements.
Historically, the brews
section was kind of a hack.
In Homebrew, Formulas are supposed to be used to build something from source,
and then install it.
We were leveraging it to install something that was already built elsewhere.
But no more!
Thanks to the help of Sean Molenaar from the
Homebrew team, this version introduces a new
homebrew_casks
section that does the
right thing!
You can follow the migration guide to learn how to
adjust your configuration, but, in most cases, you only need to rename brews
to homebrew_casks
and that’s it.
For instance, GoReleaser’s own configuration, from this:
brews:
- repository:
owner: goreleaser
name: homebrew-tap
directory: Formula
goarm: "7"
homepage: https://goreleaser.com
description: Release engineering, simplified
license: MIT
test: |
system "#{bin}/goreleaser -v"
conflicts:
- goreleaser-pro
extra_install: |-
bash_completion.install "completions/goreleaser.bash" => "goreleaser"
zsh_completion.install "completions/goreleaser.zsh" => "_goreleaser"
fish_completion.install "completions/goreleaser.fish"
man1.install "manpages/goreleaser.1.gz"
To this:
homebrew_casks:
- repository:
owner: goreleaser
name: homebrew-tap
homepage: https://goreleaser.com
description: Release engineering, simplified
license: MIT
conflicts:
- formula: goreleaser-pro
- formula: goreleaser
- cask: goreleaser-pro
manpage: "manpages/goreleaser.1.gz"
completions:
bash: "completions/goreleaser.bash"
zsh: "completions/goreleaser.zsh"
fish: "completions/goreleaser.fish"
Caution If you don’t currently sign and notarize your binaries, you might also need to add a post install hook to remove the quarantine bit.
All that being said, the old brews
section is deprecated and should be
removed in our next major (v3, not planned date yet) unless someone finds a big
reason not to.
And again, thanks to Sean for all the help and feedback given! You rock!
As an experiment, we now ship a MCP server. It doesn’t do a lot - yet, but I think that, as AI grows, it might get more features and become increasingly more useful.
You can use it with any client that supports MCP, for instance, for Claude
Desktop, you can add this to your claude_desktop_config.json
:
{
"mcpServers": {
"goreleaser": {
"command": "goreleaser",
"args": [ "mcp" ]
}
}
Or, with mods
(running from main
):
mcp-servers:
goreleaser:
command: goreleaser
args:
- mcp
Or, you can add it to your tool of choice. Basically, just call goreleaser mcp
and that’s it.
We’re also very interested in other tools GoReleaser MCP can provide. Feel free to hop in our discussion and give whatever feedback or ideas you have!
npms
got a url_template
fielddisable
fieldYou can install or upgrade using your favorite package manager, or see the full release notes and download the pre-compiled binaries from GitHub:
You can help by reporting issues, contributing features, documentation improvements, and bug fixes. You can also sponsor the project, or get a GoReleaser Pro license.