client-tool-bundles
Skill9.3k starsChanged 6 days agoApache-2.0View on GitHub
Add a supported version of a database engine or refresh a vendored client tool bundle under assets/tools (pg_dump, mysqldump, mariadb-dump, mongodump and their siblings). Covers deciding whether a new bundle is needed, finding binaries for both architectures, checking that they start in the runtime image, registering the bundle with its version identity, and refreshing a patch level. Load when a task adds an engine version, supports a new release line, or replaces binaries under assets/tools.
1 other project uses a version of this.
Trending
Quiet since July.thin dataabout the whole repository
Most recently taken up by
- databasus/databasusword for word, first seen Nov 8, 2026
Who's talking about RostislavDugin/postgresus
- @its-me-rhk.bsky.social“🗄️ Postgresus — Alat open-source untuk monitoring & backup database PostgreSQL dengan antarmuka web. ⚡ …”Bluesky · Oct 30, 2025 · 3 likes
- Dokploy/templates“Postgresus template seems outdated – project renamed to Databasus”GitHub · Jan 19, 2026 · 1 reactions
- truenas/apps“[App Request]: Postgresus / Databasus”GitHub · Dec 19, 2025 · 1 reactions
- @mariuskimmina.com“"Postgresus" is just peak project naming (and it also seems really awesome) github.com/RostislavDug...”Bluesky · Dec 6, 2025 · 1 likes
- @harungecit.dev“PostgreSQL kullanıyorsan ama yedekleme & izleme seni yoruyorsa: 💡 Postgresus tam sana göre! 🕒 Otomatik …”Bluesky · Oct 30, 2025 · 1 likes
The biggest 5 of 10 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 10
Talked about on GitHub and Bluesky (10 times).
On GitHub · 7
- Jan 19, 2026Postgresus template seems outdated – project renamed to Databasus — Dokploy/templates1 reaction
- Dec 19, 2025[App Request]: Postgresus / Databasus — truenas/apps1 reaction
- Jul 14, 2026fix: add Databasus template (Postgresus was renamed upstream) — Dokploy/templates0 reactions · 1 comment
- Dec 11, 2025Redirect to https://postgresus.com/storages/google-oauth instead of my hosted Postgresus domain — databasus/databasus0 reactions · 2 comments
- Dec 7, 2025Email Notifier Password can't be empty when creating — databasus/databasus0 reactions · 2 comments
2 more on GitHub
- Nov 17, 2025Databasus — community-scripts/DevScripts0 reactions · 6 comments
- Sep 14, 2025Update PostgreSQL badge in README — pgmq/pgmq0 reactions
On Bluesky · 3
- Oct 30, 2025🗄️ Postgresus — Alat open-source untuk monitoring & backup database PostgreSQL dengan antarmuka web. ⚡ Fitur utama: jadwal backup,… — @its-me-rhk.bsky.social3 likes and reposts
- Dec 6, 2025"Postgresus" is just peak project naming (and it also seems really awesome) github.com/RostislavDug... — @mariuskimmina.com1 likes and repost
- Oct 30, 2025PostgreSQL kullanıyorsan ama yedekleme & izleme seni yoruyorsa: 💡 Postgresus tam sana göre! 🕒 Otomatik yedekler ☁️ S3, Drive, NAS desteği… — @harungecit.dev1 likes and repost
Other versions1 project uses a version of this.
Word for word · 1
- databasus/databasus★ 9.3k100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository25 other files it gives its agents.
- AGENTS.mdAGENTS.md
- backend/AGENTS.mdAGENTS.md
- frontend/AGENTS.mdAGENTS.md
- website/AGENTS.mdAGENTS.md
- backend/CLAUDE.mdCLAUDE.md
- CLAUDE.mdCLAUDE.md
- frontend/CLAUDE.mdCLAUDE.md
- website/CLAUDE.mdCLAUDE.md
- api-designSkill
- feature-sliced-designSkill
- frontend-designSkill
- frontend-localizationSkill
- git-commitsSkill
- how-to-communicateSkill
- mantine-comboboxSkill
- mantine-custom-componentsSkill
- mantine-formSkill
- openspec-apply-changeSkill
- openspec-archive-changeSkill
- openspec-exploreSkill
- openspec-proposeSkill
- openspec-sync-specsSkill
- openspec-update-changeSkill
- run-appSkill
- testingSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Every file under assets/tools/ is a vendored third-party binary that runs in production.
- Very specific: line 48
Do not install client binaries in the Dockerfile.
- Distinctive: line 49
Do not add a shared library to the runtime image only to satisfy one client when a build against the libraries already present exists.
- Very specific: line 50
Do not trust a directory name while building the bundle.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Client tool bundles
Every file under assets/tools/ is a vendored third-party binary that runs in production. "System" in docs/architecture.md explains why they are committed instead of installed at image build time. Two rules follow from that:
- The bytes in the repository are the bytes that ship, so verify a binary in the runtime image, not on a development host.
- A bundle directory name is a label we choose. Nothing holds you to it while you assemble the bundle, so confirm what each binary is yourself.
assets/tools/README.md lists the bundles, their patch levels and download sources, the runtime image and the shared libraries it provides. Read it before changing anything here.
Before adding a version
Adding an engine version is mostly about the binary, not about the code that reads the version. Work through this list before committing anything; the first two items often end the job early.
- A new upstream release line needs a client here before it is supported. A server on a line without a bundle is refused at the connection test, because a server is never dumped with a client from an older line.
- Decide whether this is a new line or a new release inside a line we already serve. Only a new line needs a bundle. A newer release inside a served line keeps working, and its bundle is refreshed when there is a reason to.
- Prefer a line upstream still patches. Short-term and innovation releases live about a quarter. Bundle the long-term release of that era, and a short-term release only when users run it. When a line we bundle later gets a long-term release, refresh the bundle to it instead of adding an identity.
- Find binaries for both architectures. Check, in order: the vendor's architecture-independent tarball, the vendor's Debian repository, the vendor's Ubuntu repository, then RPMs for an older enterprise distribution. Do not conclude a build is unavailable after checking one of them.
- Check that the binary starts in the runtime image. Compare its newest glibc symbol with the image's glibc using
objdump -T <binary> | grep -oE 'GLIBC_2\.[0-9]+' | sort -uV | tail -1, and list its shared libraries withobjdump -p <binary> | grep NEEDED. Every library must already be in the image, per the table in the README. A matching soname is not enough: check the OpenSSL symbol versions the same way withOPENSSL_3\.[0-9]+, because a newer requirement fails only at run time. A development host with a newer OpenSSL hides the problem, so run the binary in the runtime image as the refresh list below shows. - Follow the identity shape the engine already uses. MySQL and MariaDB record a server's version differently; copy the existing shape instead of introducing the other one, and never record a version the server did not report.
- Add the bundle and the identity it serves in one change, in the engine's
version.goandclient_tools.gounderbackend/internal/engines/<engine>/. A version without a bundle stays unsupported. - Check both architectures before claiming the version is supported. A version whose client exists for one architecture only is supported only there and refused on the other; record that in the README.
- Never add a version to a lookup table. If adding a version seems to need a table entry, the table is the bug: derive the behavior from the numbers in the identity.
- An identity names a line, so its digits do not name the patch in the bundle. A bundle holding a release from a different line is a mistake.
- Add the identity constant on both sides: in the backend and in
frontend/src/entities/databases/model/<engine>/. - Add the version to the test matrices that boot a real server of each version, such as the engine tests in
backend/internal/engines/<engine>/andbackend/internal/modules/backups/e2e/<engine>/engine_<engine>_test.go. A unit test of the version mapping proves nothing about a dump. - Update the supported-version lists in the root
README.md, in all five copies underassets/readme/, and the tables inassets/tools/README.md.
Refreshing a patch level
A refresh changes the client for every server already using that bundle, so it is never a silent operation. For MariaDB, tools/refresh-mariadb-bundle.sh <bundle> <arch> does the work; edit the pinned package version in it instead of passing one in.
- Keep every binary within one bundle on the same upstream build. A tool older than its sibling can emit wrong data unnoticed.
- Pin the exact upstream package version in the refresh script. "The newest patch of this line" makes the result depend on the day it ran, and two architectures refreshed a week apart then disagree.
- Refresh both architectures from the same upstream source in the same change. Otherwise one directory name comes to mean two different builds.
- Before committing, run the refreshed binary's
--versionfor each architecture in a container of the runtime base image theDockerfilenames, withassets/toolsmounted read-only and the shared libraries from the README table installed. - Confirm the executable bit is recorded in the index:
git ls-files -smust show100755. A binary committed as100644fails at run time, not at build time. - Run the engine's whole test matrix, not only the refreshed version.
- Record the new patch and its download source in the tables in
assets/tools/README.mdin the same change.
What not to do
- Do not install client binaries in the
Dockerfile. - Do not add a shared library to the runtime image only to satisfy one client when a build against the libraries already present exists.
- Do not trust a directory name while building the bundle. Confirm what a binary is by running
--version, or by reading its version string when the architecture cannot run locally.mariadb-dump --versionprints two numbers, and only the one before-MariaDBis the server line.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

