michael1986 24d36cbad4
Some checks failed
Docker Build and Push / build-and-push (push) Has been cancelled
Tests / test (bash) (push) Has been cancelled
Tests / test (zsh) (push) Has been cancelled
Tests / lint (push) Has been cancelled
Tests / docker (push) Has been cancelled
first commit
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00
2025-12-02 09:02:03 +01:00

finishte.sh

Command-line completion powered by local LLMs. Press Tab twice and get intelligent suggestions based on your terminal context.

Quick Start

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

finishte.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:

finishte config

Change the endpoint or model:

finishte config set endpoint http://192.168.1.100:1234/v1/chat/completions
finishte config set model your-model-name

Select a model interactively:

finishte 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:

finishte command "your command"
finishte 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
finishte model

Package Managers

Homebrew (macOS)

brew tap appmodel/finish
brew install finish
finishte install
source ~/.bashrc

APT (Debian/Ubuntu)

Download the .deb package from releases:

sudo dpkg -i finish_*.deb
sudo apt-get install -f  # Install dependencies
finishte install
source ~/.bashrc

Docker

Run finishte.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:

finishte install
source ~/.bashrc
finishte 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
finishte 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

~/.finishte/
├── config              # Configuration file
├── finishte.log    # Usage log
└── cache/              # Cached completions

Commands

finishte install    # Set up finishte
finishte remove     # Uninstall
finishte config     # Show/edit configuration
finishte model      # Select model
finishte enable     # Enable completions
finishte disable    # Disable completions
finishte clear      # Clear cache and logs
finishte usage      # Show usage statistics
finishte system     # Show system information
finishte --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 finishte.sh and adding entries to _finishte_modellist.

Development

Local Development

Clone and link for development:

git clone https://git.appmodel.nl/Tour/finish.git finish
cd finish
ln -s $PWD/finishte.sh $HOME/.local/bin/finish
finishte 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

  1. Update version in finishte.sh (ACSH_VERSION)
  2. Update version in debian/changelog
  3. Update version in homebrew/finish.rb
  4. 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:

  1. Calculate SHA256 of the release tarball:

    curl -sL https://git.appmodel.nl/Tour/finish/archive/v0.5.0.tar.gz | sha256sum
    
  2. Update homebrew/finish.rb with the new SHA256 and version

  3. 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.

Description
No description provided
Readme BSD-2-Clause 249 KiB
2025-12-02 11:08:02 +01:00
Languages
Shell 94.2%
Dockerfile 3%
Ruby 2.8%