5.6 KiB
inish .sh
Command-line completion powered by local LLMs. Press Tab twice and get intelligent suggestions based on your terminal context.
Quick Start
One-Line Install (Recommended)
curl -sSL https://git.appmodel.nl/Tour/finish/raw/branch/main/docs/install.sh | bash
Manual Installation
git clone https://git.appmodel.nl/Tour/finish.git finish
cd finish
./finish.sh install
source ~/.bashrc
Other Installation Methods
See Installation below for package managers, Docker, and more options.
What It Does
inish .sh enhances your terminal with context-aware command suggestions. It analyzes:
- Current directory and recent files
- Command history
- Environment variables
- Command help output
Then generates relevant completions using a local LLM.
Features
Local by Default Runs with LM-Studio on localhost. No external API calls, no data leaving your machine.
Context-Aware Understands what you're doing based on your environment and history.
Cached Stores recent queries locally for instant responses.
Flexible Switch between different models and providers easily.
Configuration
View current settings:
finish config
Change the endpoint or model:
finish config set endpoint http://192.168.1.100:1234/v1/chat/completions
finish config set model your-model-name
Select a model interactively:
finish model
Usage
Type a command and press Tab twice:
docker <TAB><TAB>
git commit <TAB><TAB>
ffmpeg <TAB><TAB>
Natural language works too:
# find large files <TAB><TAB>
# compress to zip <TAB><TAB>
Test it without executing:
finish command "your command"
finish command --dry-run "your command"
Installation
Quick Install (Linux/macOS)
The fastest way to get started:
curl -sSL https://git.appmodel.nl/Tour/finish/raw/branch/main/docs/install.sh | bash
source ~/.bashrc # or ~/.zshrc for zsh
finish model
Package Managers
Homebrew (macOS)
brew tap appmodel/finish
brew install finish
finish install
source ~/.bashrc
APT (Debian/Ubuntu)
Download the .deb package from releases:
sudo dpkg -i finish_*.deb
sudo apt-get install -f # Install dependencies
finish install
source ~/.bashrc
Docker
Run inish .sh in a container:
# Build the image
docker build -t finish .
# Run interactively
docker run -it finish
# Or use docker-compose
docker-compose up -d finish
docker-compose exec finish bash
Inside the container:
finish install
source ~/.bashrc
finish model # Configure your LLM endpoint
From Source
git clone https://git.appmodel.nl/Tour/finish.git finish
cd finish
chmod +x finish.sh
sudo ln -s $PWD/finish.sh /usr/local/bin/finish
finish install
source ~/.bashrc
Requirements
- Bash 4.0+ or Zsh 5.0+
- curl
- jq
- bc
- bash-completion (recommended)
- LM-Studio or Ollama (for LLM inference)
Directory Structure
~/.inish /
├── config # Configuration file
├── inish .log # Usage log
└── cache/ # Cached completions
Commands
finish install # Set up inish
finish remove # Uninstall
finish config # Show/edit configuration
finish model # Select model
finish enable # Enable completions
finish disable # Disable completions
finish clear # Clear cache and logs
finish usage # Show usage statistics
finish system # Show system information
finish --help # Show help
Providers
Currently supports:
- LM-Studio (default) - Local models via OpenAI-compatible API
- Ollama - Local models via Ollama API
Add custom providers by editing inish .sh and adding entries to _inish _modellist.
Development
Local Development
Clone and link for development:
git clone https://git.appmodel.nl/Tour/finish.git finish
cd finish
ln -s $PWD/inish .sh $HOME/.local/bin/finish
finish install
Running Tests
# Install BATS testing framework
sudo apt-get install bats # Ubuntu/Debian
# Run tests
./run_tests.sh
# Or use Docker
docker build -f Dockerfile.test -t finish:test .
docker run --rm finish:test
Building Packages
Debian Package
# Install build dependencies
sudo apt-get install debhelper devscripts
# Build the package
dpkg-buildpackage -us -uc -b
# Package will be created in parent directory
ls ../*.deb
Docker Images
# Production image
docker build -t finish:latest .
# Test image
docker build -f Dockerfile.test -t finish:test .
# Using docker-compose
docker-compose build
Distribution & Publishing
Creating a Release
- Update version in
inish .sh(ACSH_VERSION) - Update version in
debian/changelog - Update version in
homebrew/finish.rb - Create and push a git tag:
git tag -a v0.5.0 -m "Release version 0.5.0"
git push origin v0.5.0
This triggers the GitHub Actions workflow which:
- Builds release artifacts
- Creates Debian packages
- Publishes Docker images to GitHub Container Registry
- Creates a GitHub release with downloadable assets
Homebrew Formula
After creating a release, update the Homebrew formula:
-
Calculate SHA256 of the release tarball:
curl -sL https://git.appmodel.nl/Tour/finish/archive/v0.5.0.tar.gz | sha256sum -
Update
homebrew/finish.rbwith the new SHA256 and version -
Submit to your Homebrew tap or the main Homebrew repository
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
BSD 2-Clause License. See LICENSE file.