{"id":14155603,"url":"https://github.com/txthinking/nami","last_synced_at":"2025-05-16T08:04:25.837Z","repository":{"id":42179915,"uuid":"249956237","full_name":"txthinking/nami","owner":"txthinking","description":"A clean and tidy decentralized package manager.","archived":false,"fork":false,"pushed_at":"2025-03-13T00:32:57.000Z","size":8363,"stargazers_count":330,"open_issues_count":2,"forks_count":32,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-08T19:23:21.096Z","etag":null,"topics":["binary-file-management","github-release","github-releases","macos","package-manager","unix","zero-configuration"],"latest_commit_sha":null,"homepage":"https://www.txthinking.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/txthinking.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"txthinking","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-03-25T11:07:37.000Z","updated_at":"2025-04-03T03:12:28.000Z","dependencies_parsed_at":"2023-10-28T11:26:14.231Z","dependency_job_id":"5980fa10-3823-40bd-af64-950838f8421f","html_url":"https://github.com/txthinking/nami","commit_stats":{"total_commits":410,"total_committers":6,"mean_commits":68.33333333333333,"dds":0.02682926829268295,"last_synced_commit":"e7ff1af93a68e5d17c8ded6046e7eee275d7aa56"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txthinking%2Fnami","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txthinking%2Fnami/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txthinking%2Fnami/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txthinking%2Fnami/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/txthinking","download_url":"https://codeload.github.com/txthinking/nami/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254493378,"owners_count":22080126,"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","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":["binary-file-management","github-release","github-releases","macos","package-manager","unix","zero-configuration"],"created_at":"2024-08-17T08:04:21.820Z","updated_at":"2025-05-16T08:04:20.829Z","avatar_url":"https://github.com/txthinking.png","language":"Go","readme":"# Nami\n\nA clean and tidy decentralized package manager.\n\n❤️ A project by [txthinking.com](https://www.txthinking.com)\n\n## Install\n\n    bash \u003c(curl https://bash.ooo/nami.sh)\n\n\u003e ⚠️ Windows user should run in [Git Bash](https://t.me/txthinking/64946/65299), [Video](https://www.youtube.com/watch?v=CioIqzSlXl8)\n\n## Example\n\n```\nnami install brook\nnami list\nnami remove brook\n```\n\nYou can also upgrade nami by nami\n\n```\nnami install nami\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eKeep PATH with sudo\u003c/summary\u003e\n\n```\nsudo visudo\n```\n\n```\nDefaults        !env_reset\n# Defaults       secure_path=...\n```\n\u003c/details\u003e\n\n## All officially maintained packages\n\n| Package | Description | Website |\n| --- | --- | --- |\n| 7z | 7-Zip is a file archiver with a high compression ratio. | [Website](https://7-zip.org/) |\n| agg | asciinema gif generator | [Website](https://github.com/asciinema/agg) |\n| brook-store | A brook user system | [Website](https://github.com/txthinkinginc/brook-store) |\n| brook | A cross-platform network tool designed for developers. | [Website](https://github.com/txthinking/brook) |\n| bun | Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one. | [Website](https://github.com/oven-sh/bun) |\n| caddy | Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS | [Website](https://github.com/caddyserver/caddy) |\n| cidr-merger | A simple command line tool to merge ip/ip cidr/ip range, supports IPv4/IPv6 | [Website](https://github.com/zhanhb/cidr-merger) |\n| cloudflare | cloudflare cli | [Website](https://github.com/txthinking/cloudflare) |\n| cloudupload | Upload files to multiple Cloud Storage in parallel. Automatically apply for ssl certificate with your domain. | [Website](https://github.com/txthinking/cloudupload) |\n| cmake | CMake, the cross-platform, open-source build system. | [Website](https://cmake.org/) |\n| cowsay | cowsay is reborn. Neo Cowsay has written in Go. | [Website](https://github.com/Code-Hex/Neo-cowsay) |\n| curl | curl with http3 support | [Website](https://github.com/curl/curl) |\n| d2 | D2 is a modern diagram scripting language that turns text to diagrams. | [Website](https://github.com/terrastruct/d2) |\n| deno | A modern runtime for JavaScript and TypeScript. | [Website](https://github.com/denoland/deno) |\n| denobundle | Bundle assets into the binary with deno compile | [Website](https://github.com/txthinking/denobundle) |\n| etcd | Distributed reliable key-value store for the most critical data of a distributed system | [Website](https://github.com/etcd-io/etcd) |\n| fd | A simple, fast and user-friendly alternative to 'find' | [Website](https://github.com/sharkdp/fd) |\n| ffmpeg | A complete, cross-platform solution to record, convert and stream audio and video. | [Website](https://github.com/txthinking/nami/blob/master/package/ffmpeg.tengo) |\n| fzf | A command-line fuzzy finder | [Website](https://github.com/junegunn/fzf) |\n| go | An open-source programming language supported by Google | [Website](https://go.dev) |\n| hancock | Manage multiple remote servers and execute commands remotely | [Website](https://github.com/txthinking/hancock) |\n| hey | HTTP load generator, ApacheBench (ab) replacement | [Website](https://github.com/rakyll/hey) |\n| httpserver | This is a very simple http static server, sometimes we need it for testing | [Website](https://github.com/txthinking/httpserver) |\n| icnsify | Easily create .icns files (Mac Icons) | [Website](https://github.com/JackMordaunt/icns) |\n| ipatool | Command-line tool that allows searching and downloading app packages (known as ipa files) from the iOS App Store | [Website](https://github.com/majd/ipatool) |\n| joker | Joker can turn process into daemon. Zero-Configuration | [Website](https://github.com/txthinking/joker) |\n| jq | Command-line JSON processor | [Website](https://github.com/jqlang/jq) |\n| mad | Generate root CA and derivative certificate for any domains and any IPs | [Website](https://github.com/txthinking/mad) |\n| markdown | markdown converter | [Website](https://github.com/txthinking/markdown) |\n| marp | A CLI interface for Marp and Marpit based converters | [Website](https://github.com/marp-team/marp-cli) |\n| minify | Go minifiers for web formats | [Website](https://github.com/tdewolff/minify) |\n| nami | The easy way to download anything from anywhere | [Website](https://github.com/txthinking/nami) |\n| nico | A HTTP3 web server for reverse proxy and single page application, automatically apply for ssl certificate, Zero-Configuration. | [Website](https://github.com/txthinking/nico) |\n| ninja | a small build system with a focus on speed | [Website](https://github.com/ninja-build/ninja) |\n| nsq | A realtime distributed messaging platform | [Website](https://github.com/nsqio/nsq) |\n| node | Node.js is an open-source, cross-platform JavaScript runtime environment. | [Website](https://nodejs.org) |\n| openwrt | OpenWrt version of brook | [Website](https://github.com/txthinking/brook) |\n| protoc | Protocol Buffers - Google's data interchange format | [Website](https://github.com/protocolbuffers/protobuf) |\n| protoc-gen-js | protoc-gen-js executable | [Website](https://github.com/protocolbuffers/protobuf-javascript) |\n| rsrc | Tool for embedding .ico \u0026 manifest resources in Go programs for Windows. | [Website](https://github.com/akavel/rsrc) |\n| shadowsocks | A Rust port of shadowsocks | [Website](https://github.com/shadowsocks/shadowsocks-rust) |\n| sshexec | A command-line tool to execute remote command through ssh | [Website](https://github.com/txthinking/sshexec) |\n| stuntman | NAT type detection | [Website](https://www.stunprotocol.org/) |\n| tengo | A fast script language for Go | [Website](https://github.com/d5/tengo) |\n| ipio | Proxy all traffic just one line command. | [Website](https://github.com/txthinking/ipio) |\n| yt-dlp | Command-line program to download videos from YouTube.com and other video sites | [Website](https://github.com/ytdl-org/youtube-dl/) |\n| z | a process manager | [Website](https://github.com/txthinking/z) |\n| zig | Zig is a general-purpose programming language and toolchain for maintaining robust, optimal and reusable software. | [Website](https://ziglang.org/) |\n| zigup | Download and manage zig compilers. | [Website](https://github.com/marler8997/zigup) |\n| zoro | zoro can help you expose local server to external network. Support both TCP/UDP, of course support HTTP. Zero-Configuration | [Website](https://github.com/txthinking/zoro) |\n\n# Directory\n\n- `$HOME/.nami`: All files of nami\n- `$HOME/.nami/bin`: When installing nami, this path is already added to your $PATH\n- `$HOME/.nami/cache`: This directory will be emptied before installing package\n    - If the package can be standalone executable files:\n        - The script should save only executable files to here. Such as [shadowsocks.tengo](https://github.com/txthinking/nami/blob/master/package/shadowsocks.tengo)\n        \u003e After the installation process is finished, nami will copy these files to the `$HOME/.nami/bin` directory\n    - If the package is a directory:\n        - The script should save the directory into here. Such as [go.tengo](https://github.com/txthinking/nami/blob/master/package/go.tengo)\n        - And write the relative paths of executable files to `links` file, one path per line. Such as [go.tengo](https://github.com/txthinking/nami/blob/master/package/go.tengo)\n        \u003e After the installation process is finished, nami will copy the directory to the `$HOME/.nami/dir/` directory and will create symbolic links to the `$HOME/.nami/bin` based on `links`\n    - Write version to `version` file\n- `$HOME/.nami/copied`: This is usually used if the command to be installed is running, such as [brook.tengo](https://github.com/txthinking/nami/blob/master/package/brook.tengo), you may:\n    1. get the processes\n    2. stop the processes\n    3. copy(not move) the commands from `$HOME/.nami/cache` to `$HOME/.nami/bin`\n    4. copy the commands from `$HOME/.nami/cache` to `$HOME/.nami/copied`, this prompts nami not to perform duplicate operations\n    5. run the previously stopped processes again\n\n# Script\n\n\u003cdetails\u003e\n\u003csummary\u003etengo\u003c/summary\u003e\n\nNami supports [tengo](https://github.com/d5/tengo) script, there is a built-in module `import(\"nami\")` for convenience:\n\n- `nami.os`: linux/darwin/windows/...\n- `nami.arch`: amd64/arm64/...\n- `nami.home_dir`: $HOME\n- `nami.bin_dir`: $HOME/.nami/bin\n- `nami.cache_dir`: $HOME/.nami/cache\n- `nami.copied_dir`: $HOME/.nami/copied\n- `append_file(file string, text string) =\u003e error`\n- `write_file(file string, text string) =\u003e error`\n- `sh(name string, args...) =\u003e error`: run command\n- `sh1(name string, args...) =\u003e bytes/error`: run command and return stdout\n- `cp(url string, dst string) =\u003e bytes/error`: download file to dst\n- `cp(url string, { from: dst, from1: dst1 }) =\u003e bytes/error`: download compressed file, and copy one or more files\n- `cp_dir(url string, { from: dst, from1: dst1 }, [link, link1]) =\u003e bytes/error`: download compressed file, and copy one or more directories, and create symbolic links\n\n\u003c/details\u003e\n\n### Run local script\n\n```\nnami install ./exmaple.tengo\n```\n\n### PR\n\nFork nami project, put `exmaple.tengo` to package directory, create PR, then you can\n\n```\nnami install example\n```\n\n### Run remote script\n\n```\nnami install https://yourserver.com/exmaple.tengo\n```\n\n## License\n\nLicensed under The GPLv3 License\n","funding_links":["https://github.com/sponsors/txthinking"],"categories":["unix"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftxthinking%2Fnami","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftxthinking%2Fnami","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftxthinking%2Fnami/lists"}