Glinter is a high-performance, transparent Git wrapper built with Bun.
| Preview | Copy |
|---|---|
[](https://glinter.jannael.com) |
Video.Project.4.mp4
g add |
g commit |
|---|---|
![]() |
![]() |
Security is a top priority for this project.
This project uses Bun as its runtime and package manager. You don't need to worry about package vulnerabilities — the bunfig.toml configuration includes minimumReleaseAge = 259200 (3 days), which prevents newly published packages from being installed automatically. This protects against supply chain attacks that have become increasingly common in the npm ecosystem.
-
Abbreviation: You can use
ginstead ofgit. -
Safe by Default: Automatically filters and prevents accidental staging of sensitive files:
.envandnode_modules. -
Transparent Wrapper: For every other command (like
commit,push,log, orstatus), Glinter acts as a direct tunnel to Git. It preserves all original colors, formatting, and interactive features of the native Git CLI.
-
for windows i used my own laptop (windows 11) so if you have a problem please create an issue
-
for linux i used WSL (windows subsystem linux) with a kali-linux vm so if you have a problem please create an issue
Glinter is designed to be as "natural" as possible, meaning it shouldn't feel like a wrapper at all.
In src/index.ts, Glinter uses Bun.spawn with stdio: 'inherit'. This is a low-level operation that connects the standard input, output, and error streams of the Git process directly to your terminal.
- Result: Git "knows" it's in a real terminal, so it correctly detects colors and allows for interactive prompts (like credential entry).
For the interactive add feature, Glinter runs git status --porcelain.
- Why?: Standard
git statusoutput is designed for humans and can change based on your Git version or system language.--porcelainis a machine-readable format that is consistent across all environments, making the file detection 100% reliable.
Using the @clack/prompts library, Glinter transforms the raw status data into a selectable list.
- The selection logic uses Bun's high-speed shell to execute the final
git addcommand, correctly escaping filenames to handle spaces and special characters.
To use Glinter as your primary Git interface (e.g., using the command g):
npm install -g @jannael/glinter- Clone the repo
- Install dependencies:
bun install - Link the binary:
bun link
now you can simply run:
g add # Opens the interactive selector
g commit # Opens commit type + message prompt
g add <file> # Runs standard git add <file>
g commit -m "" # Runs standard git commit -m ""
g status # Runs standard git status
g push # Runs standard git push

