TKIT - Customizable Tool Manager
A Rust CLI tool that works like a package manager with customizable install scripts. Similar to make, it allows you to define complex installation, removal, and update procedures for any tool through simple YAML configuration.
Installation
Or build from source:
Quick Start
Interactive Setup
TKIT includes a comprehensive setup wizard that guides you through the initial configuration:
The setup wizard will help you:
- Add Essential Tools - Choose from curated tools (git, docker, node, python)
- Configure GitHub Sync - Automatically create repositories or use existing ones
- Set Auto-Sync - Choose between manual or automatic synchronization
- Add Custom Tools - Create your first custom tool configuration
Manual Setup
If you prefer manual setup:
# Initialize with example tools
# List available tools
# Install a tool
# Add a custom tool
Reset Configuration
Start fresh by clearing all configuration:
Warning: This permanently deletes all tools, settings, and sync configuration.
Commands
tkit install <tool>- Install a tool using its defined install commandstkit remove <tool>- Remove a tool using its defined remove commandstkit update <tool>- Update a tool using its defined update commandstkit run <tool>- Run a tool using its defined run commandstkit list- List all available tools and their statustkit add <tool>- Add a new tool configuration interactivelytkit delete <tool>- Delete a tool configurationtkit examples- Show examples of tool configurationstkit search local <query>- Search installed tools locally with fuzzy matchingtkit search remote <query>- Search remote package registries (apt, snap, cargo)tkit search all <query>- Search both local and remote toolstkit init- Interactive setup wizard to initialize configurationtkit reset- Reset configuration (clear all tools and settings)tkit sync setup <repo>- Setup GitHub integration for syncing configstkit sync create-repo <name>- Create a new GitHub repositorytkit sync list-repos- List your GitHub repositoriestkit sync push- Push local config to GitHubtkit sync pull- Pull config from GitHubtkit sync status- Show sync status
Configuration
Tools are configured in ~/.config/tkit/config.yaml. Each tool can have:
- install_commands: List of commands to install the tool
- remove_commands: List of commands to remove the tool
- update_commands: List of commands to update the tool
- run_commands: List of commands to run the tool
- description: Description of the tool
Example Configuration
tools:
node:
name: node
description: Node.js runtime
install_commands:
- curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
- sudo apt-get install -y nodejs
remove_commands:
- sudo apt-get remove -y nodejs
update_commands:
- sudo apt-get update
- sudo apt-get upgrade -y nodejs
run_commands:
- node --version
- npm --version
installed: false
rust:
name: rust
description: Rust programming language
install_commands:
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
- source ~/.cargo/env
remove_commands:
- rustup self uninstall -y
update_commands:
- rustup update
run_commands:
- rustc --version
- cargo --version
installed: false
GitHub Sync
TKIT supports syncing your tool configurations with GitHub for backup and sharing across machines.
Setup GitHub Integration
-
Option A: Create repository automatically
# Create and configure a new repository -
Option B: Use existing repository
# List your repositories # Configure sync with existing repo -
Option C: Manual setup
- Create a GitHub repository manually
- Generate a personal access token with
repopermissions - Configure sync:
# Setup with token as argument
# Or setup interactively (token input hidden)
Sync Commands
# Push your config to GitHub
# Pull config from GitHub
# Check sync status (includes auto-sync status)
Auto-Sync Feature
TKIT can automatically sync your configuration to GitHub whenever you make changes:
- Enabled: Changes are automatically pushed to GitHub after adding, deleting, installing, or removing tools
- Disabled: Manual sync using
tkit sync push
Auto-sync is configured during the initial setup wizard or can be enabled by editing your configuration file.
Example Workflow
Setting up a new machine:
# 1. Initialize tkit
# 2. Configure GitHub sync
# 3. Pull your existing configuration
# 4. Install tools
Search Functionality
TKIT includes powerful search capabilities with fuzzy matching to help you find tools quickly.
Search Commands
# Search for tools installed on your system
# Search remote package registries
# Search everything (local + remote)
Search Features
- Fuzzy Matching: Find tools even with typos (e.g., "pytho" will match "python")
- Multiple Package Managers: Searches apt, snap, and cargo registries
- System Detection: Shows installed binaries with version info and install path
- Package Manager Detection: Identifies how tools were installed
- Configured Tool Search: Searches your TKIT tool configurations
Search Example Output
)
Examples Command
Get inspired with curated tool configurations:
# Show all examples
# Categories include:
# - Development Tools (VS Code, Git, Docker)
# - Programming Languages (Python, Rust, Go, Node.js)
# - Utilities (curl commands, system info)
# - Web Development (nginx, databases)
# - DevOps Tools (kubectl, terraform)
Use Cases
- Development Environment Setup: Install language runtimes, databases, tools
- Server Provisioning: Automate installation of services and dependencies
- Personal Tool Management: Keep track of installed tools and their versions
- Team Onboarding: Share consistent installation procedures
- Cross-Platform Scripts: Define platform-specific installation commands
- Configuration Backup: Sync configs with GitHub for backup and sharing
Examples
Adding a Complex Tool
# Follow prompts to add install/remove/update/run commands
Adding Custom Tools
You can add any custom tool or command:
# Add a custom tool for VS Code
# Description: Visual Studio Code editor
# Install commands:
# 1: wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
# 2: sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
# 3: sudo apt-get update && sudo apt-get install code
# Remove commands:
# 1: sudo apt-get remove code
# Update commands:
# 1: sudo apt-get update && sudo apt-get upgrade code
# Run commands:
# 1: code
# Add a utility tool
# Description: Curl example website
# Run commands:
# 1: curl -s https://httpbin.org/json
Running Tools
# Run a tool's defined commands
Multi-Step Installation Example
When adding a tool like Docker, you might define:
Install commands:
curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.shsudo usermod -aG docker $USERrm get-docker.sh
Remove commands:
sudo apt-get remove -y docker docker-engine docker.io containerd runcsudo rm -rf /var/lib/docker
Update commands:
sudo apt-get updatesudo apt-get upgrade -y docker-ce
Features
- ✅ Interactive tool addition
- ✅ Command execution tracking
- ✅ Installation status tracking
- ✅ Colored output for better UX
- ✅ Error handling with descriptive messages
- ✅ Cross-platform configuration storage
- ✅ YAML-based configuration
- ✅ Example tools included
Publishing to crates.io
- Update version in
Cargo.toml - Build and test:
cargo build --release && cargo test - Publish:
cargo publish
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
MIT License - see LICENSE file for details.