{"id":20832880,"url":"https://github.com/udhos/conbox","last_synced_at":"2025-10-12T06:35:44.867Z","repository":{"id":75074192,"uuid":"182857964","full_name":"udhos/conbox","owner":"udhos","description":"conbox is a Go implementation of unix-like utilities as single static executable intended for small container images.","archived":false,"fork":false,"pushed_at":"2023-12-19T00:11:36.000Z","size":63,"stargazers_count":41,"open_issues_count":2,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-08-15T11:50:48.060Z","etag":null,"topics":["busybox","containers","go","golang","shell","unix-like"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/udhos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-04-22T19:54:34.000Z","updated_at":"2025-07-24T03:22:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"438655bf-09de-4b3a-add9-7b54865de83b","html_url":"https://github.com/udhos/conbox","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/udhos/conbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Fconbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Fconbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Fconbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Fconbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/udhos","download_url":"https://codeload.github.com/udhos/conbox/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Fconbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279010515,"owners_count":26084757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["busybox","containers","go","golang","shell","unix-like"],"created_at":"2024-11-18T00:13:32.336Z","updated_at":"2025-10-12T06:35:44.841Z","avatar_url":"https://github.com/udhos.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![license](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/udhos/conbox/blob/master/LICENSE)\n[![Go Report Card](https://goreportcard.com/badge/github.com/udhos/conbox)](https://goreportcard.com/report/github.com/udhos/conbox)\n\n# conbox\n[conbox](https://github.com/udhos/conbox) is a Go implementation of unix-like utilities as single static executable intended for small container images.\n\n* [Install](#install)\n* [Usage](#usage)\n  * [Available applets](#available-applets)\n  * [Basename usage](#basename-usage)\n  * [Subcommand usage](#subcommand-usage)\n  * [Shell usage](#shell-usage)\n* [Adding new applet](#adding-new-applet)\n* [Docker](#docker)\n  * [Run in docker](#run-in-docker)\n  * [Docker recipes](#docker-recipes)\n* [Related work](#related-work)\n  * [Go Projects](#go-projects)\n  * [Non\\-Go projects](#non-go-projects)\n\nCreated by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc.go)\n\n# Install\n\n```bash\ngit clone https://github.com/udhos/conbox ;# clone outside of GOPATH\ncd conbox\nGO111MODULE=on go install ./conbox\n```\n\n# Usage\n\n## Available applets\n\nList available applets:\n\n```bash\n$ conbox\nconbox: version 0.0 runtime go1.12.4 GOMAXPROC=1 OS=linux ARCH=amd64\n\nusage: conbox APPLET [ARG]... : run APPLET\n       conbox -h              : show command-line help\n       conbox -l              : list applets\n\nconbox: registered applets:\ncat echo ls mkdir printenv pwd rm rmdir shell which\n```\n\nSee all implemented applets here:\n\nhttps://github.com/udhos/conbox/tree/master/applets\n\n## Basename usage\n\nYou can create a symbolic link for a supported applet pointing to 'conbox':\n\n```bash\nln -s ~/go/bin/conbox ~/bin/cat\n~/bin/cat /etc/passwd\n```\n\n## Subcommand usage\n\nPass applet name as subcommand to 'conbox':\n\n```bash\nconbox cat /etc/passwd\n```\n\n## Shell usage\n\nAll applets are also directly available from within conbox shell:\n\n```bash\n$ conbox shell\nconbox: version 0.0 runtime go1.12.4 GOMAXPROC=1 OS=linux ARCH=amd64\n\nwelcome to conbox shell.\nthis tiny shell is very limited in features.\nhowever you can run external programs normally.\nsome hints:\n       - use 'conbox' to see all applets available as shell commands.\n       - use 'help' to list shell built-in commands.\n       - 'exit' terminates the shell.\n\nshell built-in commands:\nbuiltin cd exit help\n\nconbox shell$\n```\n\n# Adding new applet\n\n1. Create a new package for the applet under directory 'applets'. The package must export the function Run() as show in example below.\n\n```\n$ more applets/myapp/run.go\npackage myapp // put applet myapp in package myapp\n\nimport (\n        \"fmt\"\n\n        \"github.com/udhos/conbox/common\"\n)\n\n// Run executes the applet.\nfunc Run(tab map[string]common.AppletFunc, args []string) int {\n\n        fmt.Println(\"myapp: hello\")\n\n        return 0 // exit status\n}\n```\n\n2. In file 'conbox/applets.go', import the applet package and include its Run() function in the applet table: \n\n```\n$ more conbox/applets.go\npackage main\n\nimport (\n\t// (...)\n        \"github.com/udhos/conbox/applets/myapp\" // \u003c-- import the applet package\n\t// (...)\n)\n\nfunc loadApplets() map[string]common.AppletFunc {\n        tab := map[string]common.AppletFunc{\n\t\t// (...)\n                \"myapp\": myapp.Run, // \u003c-- point applet name to its Run() function\n\t\t// (...)\n        }\n        return tab\n}\n```\n\n3. Rebuild conbox and test the new applet:\n\n```\n$ go install ./conbox\n$ conbox myapp\nmyapp: hello\n```\n\n# Docker\n\nGet 'conbox' as docker image `udhos/conbox:latest` from:\n\nhttps://hub.docker.com/r/udhos/conbox\n\n## Run in docker\n\nRun applet:\n\n```bash\ndocker run --rm udhos/conbox:latest cat /etc/passwd\n```\n\nRun interactive shell:\n\n```bash\ndocker run --rm -ti udhos/conbox:latest shell\n```\n\n## Docker recipes\n\nBuild docker image:\n\n```bash\n./docker/build.sh\n```\n\nTag image:\n\n```bash\ndocker tag udhos/conbox udhos/conbox:latest\n```\n\nPush image:\n\n```bash\ndocker login\ndocker push udhos/conbox:latest\n```\n\n# Related work\n\n## Go Projects\n\n- https://github.com/u-root/u-root\n\nUnfortunately these projects seem inactive:\n\n- https://github.com/surma/gobox\n- https://github.com/laher/someutils\n- https://github.com/shirou/toybox\n- https://github.com/u35s/busybox\n- https://github.com/ericlagergren/go-coreutils\n\n## Non-Go projects\n\n- https://www.busybox.net/\n- http://landley.net/toybox/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fudhos%2Fconbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fudhos%2Fconbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fudhos%2Fconbox/lists"}