plinks is a project-local link manager. When used in a repository, check in project-links.toml so everyone on the team can open the same docs, dashboards, and tickets from either a CLI or an interactive ratatui TUI.
- Keep useful or common links in the repo instead of in browser bookmarks.
- Make onboarding easier (the same links for everyone, in the same place).
- Avoid hunting through wikis, chat logs, and stale docs when you need the right dashboard or ticket board.
- Add a link from anywhere inside your repo:
plinks add git https://github.com/my-username/my-project
plinks a slack https://my-org.slack.com --alias chat --tag comms # shorthand for "add"
plinks a linear https://linear.app/my-org --alias pm --tag comms
plinks a docs https://docs.rs --alias api --tag rust --tag reference --note "Rust API docs"If project-links.toml doesn't exist yet, plinks creates it at your Git repository root (or in the current directory if you're not in a Git repo). Commit the file to share it with your team.
- Open links by name, alias, or tag:
plinks open docs
plinks o api # shorthand for "open"
plinks o --tag rust- List links:
plinks list
plinks ls --tag rust # shorthand for "list"- Launch the interactive TUI:
plinks
plinks manage # or explicitlyIn the TUI, press y to copy the highlighted link to your system clipboard.
On Linux, plinks uses wl-copy, xclip, or xsel so the copied URL persists after plinks exits. At least one of those utilities must be installed for y to work; otherwise the yank action fails with an error.
Run plinks --help to see all commands.
plinks looks for project-links.toml in the current directory first.
If it does not find one, it checks ancestor directories up to the Git repository root:
- If an ancestor already contains
project-links.toml, that file is used. - If no file exists yet,
plinksuses<git-root>/project-links.toml. - Outside a Git repository, it falls back to
<cwd>/project-links.toml.
This makes it practical to run plinks anywhere inside a repository while still keeping one shared config file at the project level.
[links]
[links.docs]
url = "https://docs.rs"
aliases = ["api"]
tags = ["reference", "rust"]
note = "Rust API docs"
[links.jira]
url = "https://jira.example.com/browse/PROJ"
tags = ["ops"]Primary names, aliases, and tags are normalized when saved to lowercase and may contain letters, numbers, _, and -.
Prebuilt binaries are published on GitHub Releases for these targets:
x86_64-pc-windows-msvcx86_64-unknown-linux-gnux86_64-apple-darwin
Windows releases are unsigned, so depending on local policy, Windows may show SmartScreen or other trust warnings before first launch.
After downloading:
- Unpack the archive and put
plinks/plinks.exesomewhere on yourPATH. - On macOS/Linux you may need
chmod +x plinksafter extracting.
Install the latest from this repo:
cargo install --git https://github.com/adambuchweitz/plinksOr install from a local checkout:
cargo install --path .Build a development binary from the checkout:
cargo buildBuild an optimized release binary:
cargo build --releaseThe compiled binary is written to:
target/debug/plinksfor development buildstarget/release/plinksfor release builds
Run the binary directly from the checkout:
cargo run -- <command>Test:
cargo testInstall the repository's Git hooks:
./scripts/install-git-hooks.shThe pre-commit hook runs the same lint commands as CI:
./scripts/run-linters.shGitHub Releases publish prebuilt binaries for Windows, Linux, and macOS. Release assets are named using stable target-specific archives:
plinks-v<version>-x86_64-pc-windows-msvc.zipplinks-v<version>-x86_64-unknown-linux-gnu.tar.gzplinks-v<version>-x86_64-apple-darwin.tar.gz
Every release also includes a SHA256SUMS file covering all published archives.
- Bump the crate version in
Cargo.tomland refreshCargo.lockso locked CI builds stay in sync. - Merge the release commit to
main. - Create and push a matching Git tag in the form
vX.Y.Z. - GitHub Actions handles the rest:
- Validates that the tag matches
Cargo.toml - Builds the release binaries
- Runs
--helpsmoke tests for each release target - Packages the binary together with
LICENSEandREADME.md - Generates
SHA256SUMS - Publishes the release assets automatically
- Validates that the tag matches
Build the Arch distribution artifacts:
./scripts/build-arch-package.shThis writes the source tarball and PKGBUILD to dist/arch/.
Build the package locally with makepkg:
cd dist/arch
makepkg -CfBuild and install the package with makepkg:
cd dist/arch
makepkg -Csi./scripts/build-arch-package.sh removes previously built pkg.tar.* artifacts in dist/arch/, so rerunning this sequence rebuilds the package instead of reusing an older archive.
MIT. See LICENSE.