Personal tool distribution & update launcher — like Steam for your own tools.
Browse, install, update, and launch your personal tools from a single app. Tools are published as GitHub Releases and discovered via a centralized catalog.
- Store — Browse all available tools with search and category filters
- Library — Manage installed tools, launch them, check for updates
- Auto-update check — Compares installed versions against GitHub Releases on startup
- Download & install — Downloads the correct binary for your platform automatically
- Bug report — Opens the tool's GitHub Issues page directly from the app
- Desktop integration — Add the AppImage to your Linux application menu
- Settings — Optional GitHub PAT for higher API rate limits, stored in system keychain
- Self-update — The launcher updates itself via GitHub Releases
| Component | Technology |
|---|---|
| Framework | Tauri v2 (Rust) |
| Frontend | SolidJS + TypeScript |
| Styling | Custom CSS (Steam-inspired dark theme) |
| Packaging | AppImage, .deb, .rpm (Linux) / .msi, .exe (Windows) |
| Auto-update | tauri-plugin-updater |
| Keychain | system keyring (GNOME Keyring / Windows Credential Manager) |
- A centralized catalog lists all available tools as a JSON file
- Each tool publishes compiled binaries via GitHub Releases following the naming convention:
ToolName-{version}-linux-x86_64.AppImage ToolName-{version}-windows-x86_64.exe - PyArsenal fetches the catalog, shows available tools, and handles download/install/update
- Rust (stable)
- Node.js 20+
- Linux:
libwebkit2gtk-4.1-dev,librsvg2-dev,libgtk-3-dev,libssl-dev,pkg-config
# Linux
./build_linux.sh
# Windows
build_windows.batOr manually:
npm install
npm run tauri buildOutput:
- Linux:
src-tauri/target/release/bundle/appimage/PyArsenal_*.AppImage - Windows:
src-tauri/target/release/bundle/nsis/PyArsenal_*.exe
npm install
npm run tauri devTools are listed in pyarsenal-catalog. To add a tool, add an entry to catalog.json:
{
"id": "my-tool",
"name": "My Tool",
"description": "What it does.",
"category": "Utilities",
"icon": "my-tool.png",
"repo": "username/my-tool",
"platforms": ["linux", "windows"],
"asset_patterns": {
"linux": "MyTool-{version}-linux-x86_64.AppImage",
"windows": "MyTool-{version}-windows-x86_64.exe"
},
"binary_name": {
"linux": "MyTool.AppImage",
"windows": "MyTool.exe"
}
}MIT