Show HN: GoPOSIX – a Go-native POSIX userland, ~97% BusyBox-compatible
GoPOSIX is a Go-native, single-binary POSIX userland that achieves 96.6% test compatibility with BusyBox (591/612 tests). Developed in about 3 weeks using AI agentic development, it demonstrates the potential of Go for system utilities.
Notifications You must be signed in to change notification settings
Fork 0
Star 3
BranchesTags
Open more actions menu
Folders and files
NameName
Last commit message
Last commit date
Latest commit
History
209 Commits
209 Commits
.github/workflows
.github/workflows
.wiki-instructions
.wiki-instructions
cmd/goposix
cmd/goposix
docker
docker
internal
internal
pkg
pkg
runtest-tempdir-links
runtest-tempdir-links
test
test
testdata
testdata
wiki
wiki
.gitignore
.gitignore
.goreleaser.yml
.goreleaser.yml
.wikirc
.wikirc
AGENTS.md
AGENTS.md
CLAUDE.md
CLAUDE.md
CONTRIBUTING.md
CONTRIBUTING.md
Makefile
Makefile
README.md
README.md
forwarder.go
forwarder.go
forwarder_test.go
forwarder_test.go
go.mod
go.mod
go.sum
go.sum
goposix.go
goposix.go
goposix_test.go
goposix_test.go
upgrade.go
upgrade.go
upgrade_test.go
upgrade_test.go
Repository files navigation
A Go-native, single-binary POSIX with 96.6% BusyBox test compatibility (591/612).
Why?
Well, I wanted to do an experiment on Harsness Engineering, and improve my "agentic development" skills, prompts, instructions and all that. I did LFS in my early 20's and I had this weird itch of "do your own thing" but left it alone for my own sanity. Still the POSIX concepts remained in the back of my head. Last year (2025) I started to learn Go-lang, and then LLMs got really good in December 2025. Good enough that I've been using it at work non stop since then.
During that time I got this notion that AI waste time formating output, so I started doing --json output in a lot of my work scripts and tools (to save some time for my robot friends). Eventually all of these random ideas boiled to the conclusion that I should make a complete implementation of POSIX utilities in Go, with a JSON output and a Go SDK, and then benchmark it against BusyBox. It's the "natural conclusion" ... right?
Also deepseek-v4-pro had an very agressive 75% discount until 2026/05/31 15:59 UTC, and I wanted to try pi.dev instead of Antigravity/ClaudeCode.
All things kind of aligned in the last month so here we are now.
I'm not the first to start something like this, there is cugo and go-posix, but sadly they seem to be abandoned, and no wonder! A project like this is a huge undertaking, its probably a year of solid work for 1 human, that being said, took about 3 weeks to do with AI, with the proper "harness" and "agentic development" approach, that's really something.
Anyway the project got into a point that I'm happy with the results, that's enough for me ☑️.
Honest and Obvious Recognitions
I want to be very clear about this:
The only reason this works is that there's a brutally thorough, existing corpus of tests to validate against. The AI iterated until it passed. Without BusyBox's tests, this project is just random hallucinated code. The test suite is the real hero.
So check and support BusyBox project and take a look at its amazing test suite, it's a masterpiece of thoroughness and coverage, and it made this project possible.
Also Mvdan Shell, it really saved my butt. Absolutely brilliant.
And goawk, which I used for the awk implementation, another big save!
Finally: let's not kid ourselves, this project is 90% wiring the AI to do the heavy lifting, 10% is steering it in the right direction, the fact that I was able to "solo dev" this with an LLM, reproducing close to 99% of BusyBox's behavior in a completely different language shows that POSIX utilities are, at their core, text transformers with very well-defined contracts (do one thing and do it well).
Quickstart!
See wiki/sdk.md for the full Go SDK guide and wiki/usage.md for CLI usage and Docker recipes.
CLI (secondary)
One-shot CLI invocation.
docker pull ghcr.io/ramayac/goposix:cli docker run --rm ghcr.io/ramayac/goposix:cli ls --json /
Build & Test
make all # vet + test + build make test # unit tests make testsuite # BusyBox integration tests (gates every commit) make ci # full pipeline (test + testsuite + coverage + docker)
Environment Variables
Variable Default Description
GOPOSIX_SHELL_TIMEOUT 30s Shell execution timeout (Go duration format, e.g. 60s, 5m)
I think there should be more... right?
Performance Highlights
Metric GoPOSIX BusyBox Ratio
Per-call latency (Go SDK, persistent) 60µs 680µs (fork+exec) 11× faster
grep on 100MB file 0.16s 0.86s 5.4× faster (RE2 vs POSIX ERE)
Binary size 10 MB 800 KB 12.5× larger
Cold start 7ms 97% BusyBox test compatibility.
Resources
Readme
Contributing
Contributing
Uh oh!
There was an error while loading. Please reload this page.
Activity
Stars
3 stars
Watchers
0 watching
Forks
0 forks
Report repository
Releases 8
v1.0.10
Latest
May 20, 2026
+ 7 releases
Contributors
Uh oh!
There was an error while loading. Please reload this page.
Languages
Go 77.6%
Shell 21.1%
Makefile 1.1%
Dockerfile 0.2%