tailscale/goexpect — explained in plain English
Analysis updated 2026-07-25 · repo last pushed 2023-10-28
Automate logging into dozens of routers to update their configurations.
Automate file transfers with an old FTP server that lacks a programmatic API.
Test automation logic against a simulated device before running on real systems.
| tailscale/goexpect | adguardteam/go-webext | candratama/tamagosh | |
|---|---|---|---|
| Stars | 11 | 11 | 11 |
| Language | Go | Go | Go |
| Last pushed | 2023-10-28 | 2026-06-25 | — |
| Maintenance | Dormant | Maintained | — |
| Setup difficulty | easy | moderate | easy |
| Complexity | 2/5 | 2/5 | 2/5 |
| Audience | developer | developer | ops devops |
Figures from each repo's GitHub metadata at analysis time.
Just add the Go package to your project, no external infrastructure or API keys required.
Goexpect is a tool for automating interactions with programs that normally require a human to type responses at a prompt. Think of logging into a router over SSH, or connecting to a FTP server, where you have to wait for a "username:" prompt, type your username, wait for "password:", type your password, and so on. Instead of a person doing this manually, goexpect lets a Go program handle the whole conversation automatically. The way it works is based on a classic concept called "Expect," which has been around for decades. You start by launching or "spawning" a session, which could be a local process, an SSH connection, or a telnet session. Once connected, your program watches the incoming text and waits for a specific pattern, like "username:". When it sees that pattern, it sends a response, like your username. Then it watches for the next prompt and sends the next response. This send-and-expect cycle continues until the entire workflow is complete. You can also group these steps together into a "batch" to make multi-step interactions cleaner and easier to write. This project would be used by developers who need to automate interactions with network equipment, remote servers, or any system that relies on text-based prompts rather than a modern API. For example, a network engineer might use it to write a program that automatically logs into dozens of routers to update their configurations. A developer could also use it to automate file transfers with an old FTP server that doesn't have a programmatic interface. The project also includes a "Fake Spawner" specifically for testing. This lets a developer simulate a device or server's responses without actually connecting to anything, making it easier to verify that their automation logic works correctly before running it against real systems. The package is written in Go, and while it originated at Google, the README notes it is not an official Google product.
A Go library that automates text-prompt interactions with programs like routers and FTP servers, letting your code wait for prompts and send responses automatically instead of typing them by hand.
Mainly Go. The stack also includes Go.
Dormant — no commits in 2+ years (last push 2023-10-28).
No license is specified in the README, so default copyright restrictions apply and you should contact the maintainers before using it.
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
double-check against the repo, no cap.