npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@alhisan/gac

v1.3.0

Published

Terminal client for GPT4All running on localhost

Downloads

129

Readme

GAC CLI (gac)

Terminal client for OpenAI-compatible APIs (including GPT4All) and Ollama. Supports streaming responses, interactive chat, and configurable markdown rendering using terminal-kit.

Installation

Requirements: Node.js 18+ and a running OpenAI-compatible server (like GPT4All) or Ollama.

npm install -g @alhisan/gac

Or if you don't want to install globally

npm install
node bin/gac.js --help

Test if it works:

gac --help

Usage

Single prompt:

gac -a "Hello gpt4all, how are you doing today?"
gac "How do I push to GitHub?"
gac suggest "How do I connect to ssh server on a custom port 5322?"
gac explain "How do I use rsync?"
gac suggest -d "Give me step-by-step instructions to set up an SSH server on port 5322"
gac runbook "Set up a new Node.js project with eslint"

List models and set a default:

gac models

This opens an interactive selector. Use arrow keys + Enter to choose a model, or Ctrl+C/Esc to cancel.

Interactive mode:

gac chat

Exit chat with exit, quit, or Ctrl+C.

Flags:

  • --no-render disables markdown styling for that run.
  • --debug-render prints the raw model output after the rendered response.
  • -d, --detailed-suggest enable more detailed, step-by-step suggestions in suggest mode (can also be set via config key detailedSuggest).
  • --detailed-context include current directory context in suggest/explain prompts (can also be set via config key detailedContext).

Configuration

Config file is created on first run:

  • Primary: ~/.gac/config.json
  • Fallback: .gac/config.json (when home is not writable)

View and edit:

gac config
gac config tui
gac config get baseUrl
gac config set baseUrl http://localhost:4891
gac config set model "Llama 3 8B Instruct"
gac config set markdownStyles.codeStyles '["#8be9fd"]'
gac config set detailedSuggest true
gac config set detailedContext true

Core settings

  • provider (string): openai (default) or ollama
  • baseUrl (string): GPT4All server base, e.g. http://localhost:4891
  • ollamaBaseUrl (string): Ollama base, e.g. http://localhost:11434
  • apiKey (string): API key for OpenAI-compatible services (empty for local servers)
  • model (string): model ID from /v1/models
  • temperature (number)
  • maxTokens (number)
  • stream (boolean)
  • requestTimeoutMs (number): request timeout in milliseconds (0 to disable). Useful for larger models or slower servers.
  • defaultAction (string): default mode for direct prompts (suggest, ask, or explain).
  • detailedSuggest (boolean): when true, suggest mode returns more detailed, step-by-step suggestions.
  • detailedContext (boolean): when true, suggest/explain prompts include the current directory and ls output.
  • renderMarkdown (boolean)

Markdown styling

All markdown options live under markdownStyles:

  • headerStyles (array of styles)
  • headerStylesByLevel (object, keys 16 → array of styles)
  • headerUnderline (boolean)
  • headerUnderlineLevels (array of levels to underline)
  • headerUnderlineStyle (array of styles)
  • headerUnderlineChar (string, single character)
  • codeStyles (array of styles)
  • codeBackground (array of styles)
  • codeBorder (boolean)
  • codeBorderStyle (array of styles)
  • codeGutter (string)
  • codeBorderChars (object: topLeft, top, topRight, bottomLeft, bottom, bottomRight)

Style values can be:

  • Terminal-kit style names like bold, underline, dim, brightWhite
  • Foreground hex colors: "#ffcc00"
  • Background hex colors: "bg:#202020" or "bg#202020"
  • Default/transparent: "default" (fg) or "bg:default"

Example:

{
  "markdownStyles": {
    "headerStylesByLevel": {
      "1": ["bold", "brightWhite"],
      "2": ["bold"],
      "3": ["bold"],
      "4": ["dim"],
      "5": ["dim"],
      "6": ["dim"]
    },
    "headerUnderline": true,
    "headerUnderlineLevels": [1],
    "codeStyles": ["#8be9fd"],
    "codeBackground": ["bg:default"],
    "codeBorderStyle": ["#444444"]
  }
}

Troubleshooting

If you see connection errors, verify the server is reachable:

curl http://[SERVER_ADDRESS]:[SERVER_PORT]/v1/models

For Ollama:

curl http://[SERVER_ADDRESS]:[SERVER_PORT]/api/tags

License

GNU General Public License v3.0. See LICENSE.

Disclaimer

This was mostly vibe coded and I'm treating it as a fun side project / tool that is likely to remain improved and updated by agentic models. Some notes on runbook the command is kinda dangerous i tried adding some guard rails by making a list of blocked commands. However, please be responsible and keep in mind that the model may return some commands that need editing and the program will just execute these commands one by one without checking for any values or changes it should make before