meowg1k

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 6, 2026 License: Apache-2.0

README

meowg1k

GitHub stars GitHub forks Latest Release Build Status Go Report Card Go Version License

A purr-fectly scriptable CLI that brings AI superpowers to your terminal—automate commits, reviews, and workflows with feline precision
meowg1k Logo

OverviewSee It in ActionKey FeaturesInstallationQuick StartDocumentationContributingSecurityLicense

🎯 Overview

meowg1k is a command-line tool that brings the power of modern LLMs (Large Language Models) into your terminal. The executable is meow. Unlike interactive assistants, meowg1k is designed for automation and scripting — a Unix-philosophy tool that predictably transforms code into AI-enhanced results.

Who Should Use This?

meowg1k is built for professionals who value automation, reproducibility, and control:

  • Software Engineers who want to integrate AI into their development workflow through shell scripts, editor integrations, and command-line tools
  • DevOps & Platform Engineers who need to automate code quality checks, generate documentation, and standardize commit/PR descriptions across teams in CI/CD pipelines
  • Security Professionals who require complete data privacy by running AI analysis on sensitive codebases using local models that never leave their infrastructure
  • Open Source Maintainers who need consistent, high-quality automated documentation and review processes that can be version-controlled and shared with contributors

🎬 See It in Action

📝 Automated Commit Message Generation
meowg1k commit demo
🔍 RAG-Powered Code Search and Q&A
meowg1k rag demo

✨ Key Features

🔌 Provider-Agnostic Architecture

Switch between Gemini, OpenAI, Anthropic, OpenRouter, or self-hosted models with a simple configuration change. No vendor lock-in—your workflows remain portable across any AI provider.

🔒 Privacy-First Design

Run completely offline using local LLMs via llama.cpp. Your proprietary code never leaves your machine unless you explicitly configure a cloud provider. All API keys are held only in memory and never persisted.

Native Performance, Zero Overhead

Single statically-linked binary with no runtime dependencies. Starts instantly, uses minimal resources, and runs anywhere—from Docker containers to air-gapped servers.

🤖 Automation-Native

Built for scripting and CI/CD, not conversations. Predictable input/output model makes it perfect for Git hooks, pre-commit checks, automated reviews, and batch processing.

💰 Transparent Cost Control

Fine-grained rate limiting and token caps prevent unexpected bills. Configure request quotas, set spending limits per preset, and monitor usage—all in code.

📝 Configuration as Code

Every aspect of behavior is defined in version-controlled YAML files. Share configurations across teams, reproduce workflows exactly, and audit every decision.

🎯 RAG-Powered Code Understanding

Ask questions about your codebase using Retrieval-Augmented Generation. Semantic search finds relevant code using vector similarity, then LLMs provide context-aware answers grounded in your actual code.

📦 Installation

⚡ Quick Install
# Using Go (requires Go 1.25.2+)
go install github.com/retran/meowg1k@latest

# Using Homebrew (macOS/Linux)
brew install retran/homebrew-meow-tap/meow
🔧 Platform-Specific Installation
Windows (Scoop)
scoop bucket add meow-tap https://github.com/retran/homebrew-meow-tap
scoop install meow
Linux (.deb / .rpm)

Download from releases page

# Debian/Ubuntu
sudo dpkg -i meowg1k_*.deb

# Fedora/RHEL
sudo rpm -i meowg1k_*.rpm

📚 For detailed installation instructions, see the Installation Guide

🚀 Quick Start

1️⃣ Initialize Your Project
cd your-project
meow init

This creates a .meowg1k.yaml file with sensible defaults.

2️⃣ Configure API Key

Get a free API key from Google AI Studio:

# Add to ~/.bashrc or ~/.zshrc
export MEOW_GEMINI_API_KEY="your-api-key-here"

# Reload your shell
source ~/.bashrc  # or ~/.zshrc
3️⃣ Start Using meow
# Generate code from a prompt
echo "Create a hello world function in Python" | meow g

# Generate a commit message
git add .
meow draft commit

# Generate a Pull Request description
meow draft pr --base main

# Index your codebase for semantic search
meow index

# Search your code semantically
meow search "authentication logic"

# Ask questions about your codebase
meow ask "How does error handling work in this project?"

📖 Documentation

🛠️ Getting Started
📚 Learn More
🔧 Support

For a complete overview, visit our Documentation Index.

🤝 Contributing

We welcome contributions! Whether it's bug reports, feature requests, or code contributions — we'd love your help.

🔐 Security

Security is a top priority. If you discover a security vulnerability:

  1. Do not open a public issue
  2. Follow our Security Policy
  3. Report privately to the maintainers

📄 License

This project is licensed under the Apache License 2.0.


Made with ❤️ by Andrew Vasilyev and feline assistants Sonya Blade, Mila, and Marcus Fenix

Happy coding with Project Meow! 🐱

⭐ Star us on GitHub🐛 Report Bug💡 Request Feature🔀 Contribute

Directories

Path Synopsis
cmd
Package cmd implements the command-line interface for meow.
Package cmd implements the command-line interface for meow.
meow command
Package main is the entry point for the meow CLI application.
Package main is the entry point for the meow CLI application.
internal
activities/agentloop
Package agentloop implements an iterative agent loop that can call tools.
Package agentloop implements an iterative agent loop that can call tools.
activities/buildbatches
Package buildbatches implements an activity that groups chunks into batches for embedding computation.
Package buildbatches implements an activity that groups chunks into batches for embedding computation.
activities/buildindex
Package buildindex implements an activity that builds and saves a vector index for a single snapshot.
Package buildindex implements an activity that builds and saves a vector index for a single snapshot.
activities/buildindexes
Package buildindexes implements a parent activity that builds vector indices for multiple snapshots sequentially.
Package buildindexes implements a parent activity that builds vector indices for multiple snapshots sequentially.
activities/control
Package control provides activities for flow control operations.
Package control provides activities for flow control operations.
activities/deletefile
Package deletefile implements an activity for permanently deleting files.
Package deletefile implements an activity for permanently deleting files.
activities/draftcommit
Package draftcommit implements an activity that generates commit messages using an LLM.
Package draftcommit implements an activity that generates commit messages using an LLM.
activities/draftcommitflat
Package draftcommitflat implements an activity that generates commit messages from a flat list of file changes.
Package draftcommitflat implements an activity that generates commit messages from a flat list of file changes.
activities/draftcontent
Package draftcontent implements an activity that invokes an LLM to draft text responses.
Package draftcontent implements an activity that invokes an LLM to draft text responses.
activities/draftflat
Package draftflat implements a generic activity for composing text using an LLM with file context.
Package draftflat implements a generic activity for composing text using an LLM with file context.
activities/draftpr
Package draftpr implements an activity that generates pull request descriptions using an LLM.
Package draftpr implements an activity that generates pull request descriptions using an LLM.
activities/draftprflat
Package draftprflat implements an activity that generates pull request descriptions from a flat list of file changes.
Package draftprflat implements an activity that generates pull request descriptions from a flat list of file changes.
activities/editfile
Package editfile implements an activity for editing files by string replacement.
Package editfile implements an activity for editing files by string replacement.
activities/embedall
Package embedall implements a parent activity that computes embeddings for multiple batches sequentially.
Package embedall implements a parent activity that computes embeddings for multiple batches sequentially.
activities/embedbatch
Package embedbatch implements an activity that computes embeddings for a batch of text chunks.
Package embedbatch implements an activity that computes embeddings for a batch of text chunks.
activities/fetchbranchdiff
Package fetchbranchdiff implements an activity that fetches the diff of a file between current branch and target branch.
Package fetchbranchdiff implements an activity that fetches the diff of a file between current branch and target branch.
activities/fetchbranchdiffs
Package fetchbranchdiffs implements a parent activity that fetches branch diffs for multiple files sequentially.
Package fetchbranchdiffs implements a parent activity that fetches branch diffs for multiple files sequentially.
activities/fetchcontext
Package fetchcontext implements an activity that retrieves and formats context for RAG queries.
Package fetchcontext implements an activity that retrieves and formats context for RAG queries.
activities/fetchstageddiff
Package fetchstageddiff implements an activity that fetches the staged diff for a single file.
Package fetchstageddiff implements an activity that fetches the staged diff for a single file.
activities/fetchstageddiffs
Package fetchstageddiffs implements a parent activity that fetches staged diffs for multiple files sequentially.
Package fetchstageddiffs implements a parent activity that fetches staged diffs for multiple files sequentially.
activities/filterfiles
Package filterfiles implements an activity that filters files based on include/exclude patterns.
Package filterfiles implements an activity that filters files based on include/exclude patterns.
activities/finalizeindex
Package finalizeindex implements an activity that finalizes snapshot states in the database.
Package finalizeindex implements an activity that finalizes snapshot states in the database.
activities/getdiff
Package getdiff implements an activity for retrieving git diffs.
Package getdiff implements an activity for retrieving git diffs.
activities/getplan
Package getplan provides activities for retrieving the current plan/task board.
Package getplan provides activities for retrieving the current plan/task board.
activities/gitundo
Package gitundo implements an activity for discarding uncommitted changes.
Package gitundo implements an activity for discarding uncommitted changes.
activities/listbranchchanges
Package listbranchchanges implements an activity that lists files changed between current branch and target branch.
Package listbranchchanges implements an activity that lists files changed between current branch and target branch.
activities/listfiles
Package listfiles implements an activity for listing files in a directory.
Package listfiles implements an activity for listing files in a directory.
activities/liststagedfiles
Package liststagedfiles implements an activity that lists all files currently staged in git.
Package liststagedfiles implements an activity that lists all files currently staged in git.
activities/memorize
Package memorize provides activities for storing facts in flow memory.
Package memorize provides activities for storing facts in flow memory.
activities/movefile
Package movefile implements an activity for moving or renaming files.
Package movefile implements an activity for moving or renaming files.
activities/plan
Package plan implements an activity for initializing task plans.
Package plan implements an activity for initializing task plans.
activities/prepareindex
Package prepareindex implements an activity that deduplicates files and prepares them for processing.
Package prepareindex implements an activity that deduplicates files and prepares them for processing.
activities/pruneindex
Package pruneindex implements an activity that removes outdated document versions and embeddings from storage.
Package pruneindex implements an activity that removes outdated document versions and embeddings from storage.
activities/readfile
Package readfile implements an activity for reading file contents.
Package readfile implements an activity for reading file contents.
activities/runshell
Package runshell implements an activity for executing shell commands.
Package runshell implements an activity for executing shell commands.
activities/savechunks
Package savechunks implements an activity that distributes embeddings to chunks and saves them to storage.
Package savechunks implements an activity that distributes embeddings to chunks and saves them to storage.
activities/savefileversion
Package savefileversion implements an activity that saves a document version with its chunks to storage.
Package savefileversion implements an activity that saves a document version with its chunks to storage.
activities/scanworktree
Package scanworktree implements an activity that scans workspace state (working directory, stage, or HEAD) for files.
Package scanworktree implements an activity that scans workspace state (working directory, stage, or HEAD) for files.
activities/searchindex
Package searchindex implements an activity that performs semantic search across indexed code using vector similarity.
Package searchindex implements an activity that performs semantic search across indexed code using vector similarity.
activities/splitfile
Package splitfile implements an activity that chunks a single file into smaller pieces for embedding.
Package splitfile implements an activity that chunks a single file into smaller pieces for embedding.
activities/splitfiles
Package splitfiles implements a parent activity that chunks multiple files sequentially.
Package splitfiles implements a parent activity that chunks multiple files sequentially.
activities/summarize
Package summarize implements an activity for summarizing content using an LLM.
Package summarize implements an activity for summarizing content using an LLM.
activities/summarizechanges
Package summarizechanges implements a parent activity that summarizes changes for multiple files sequentially.
Package summarizechanges implements a parent activity that summarizes changes for multiple files sequentially.
activities/summarizefilechanges
Package summarizefilechanges implements an activity that generates a summary of changes in a single file using an LLM.
Package summarizefilechanges implements an activity that generates a summary of changes in a single file using an LLM.
activities/tracktask
Package tracktask implements an activity for updating task status in a plan.
Package tracktask implements an activity for updating task status in a plan.
activities/writefile
Package writefile implements an activity for creating or overwriting files.
Package writefile implements an activity for creating or overwriting files.
adapters/command
Package command provides services for accessing command-line flags and input streams.
Package command provides services for accessing command-line flags and input streams.
adapters/config
Package config provides configuration management using Viper, supporting multiple config sources.
Package config provides configuration management using Viper, supporting multiple config sources.
adapters/gateway
Package gateway provides adapters for LLM providers (OpenAI, Anthropic, Gemini, etc.) with caching, rate limiting, and logging.
Package gateway provides adapters for LLM providers (OpenAI, Anthropic, Gemini, etc.) with caching, rate limiting, and logging.
adapters/git
Package git provides a service for executing git commands to read staged files, diffs, and branch information.
Package git provides a service for executing git commands to read staged files, diffs, and branch information.
adapters/httpclient
Package httpclient provides a configured HTTP client with custom transport settings and timeouts.
Package httpclient provides a configured HTTP client with custom transport settings and timeouts.
adapters/output
Package output provides services for writing formatted output and progress feedback to the console.
Package output provides services for writing formatted output and progress feedback to the console.
adapters/sqlite
Package sqlite provides SQLite database access and manages connections for index, cache, metadata, and rate limiting storage.
Package sqlite provides SQLite database access and manages connections for index, cache, metadata, and rate limiting storage.
adapters/sqlite/cache
Package cache provides a SQLite-based repository for caching LLM responses with TTL support.
Package cache provides a SQLite-based repository for caching LLM responses with TTL support.
adapters/sqlite/index
Package index provides a SQLite-based repository for storing and querying document chunks, embeddings, and snapshots.
Package index provides a SQLite-based repository for storing and querying document chunks, embeddings, and snapshots.
adapters/sqlite/meta
Package meta provides a SQLite-based repository for storing and retrieving metadata key-value pairs.
Package meta provides a SQLite-based repository for storing and retrieving metadata key-value pairs.
adapters/sqlite/migrations
Package migrations applies SQLite schema migrations.
Package migrations applies SQLite schema migrations.
adapters/sqlite/path
Package path provides services for resolving SQLite database file paths based on workspace location.
Package path provides services for resolving SQLite database file paths based on workspace location.
adapters/sqlite/ratelimit
Package ratelimit provides a SQLite-based repository for tracking and enforcing API rate limits.
Package ratelimit provides a SQLite-based repository for tracking and enforcing API rate limits.
adapters/tracelog
Package tracelog provides structured logging for tracing LLM API interactions and activity execution.
Package tracelog provides structured logging for tracing LLM API interactions and activity execution.
adapters/workspace
Package workspace provides services for resolving and managing the workspace directory path.
Package workspace provides services for resolving and managing the workspace directory path.
app
Package app provides the application container that orchestrates all services and dependencies.
Package app provides the application container that orchestrates all services and dependencies.
core/agent
Package agent provides configuration resolution for agent mode.
Package agent provides configuration resolution for agent mode.
core/agent/state
Package state manages flow execution state including memory and task planning.
Package state manages flow execution state including memory and task planning.
core/agent/tools
Package tools defines the standard tools available to the agent.
Package tools defines the standard tools available to the agent.
core/chunker
Package chunker provides services for splitting file content into chunks for embedding.
Package chunker provides services for splitting file content into chunks for embedding.
core/commit
Package commit provides services for composing commit messages from file changes.
Package commit provides services for composing commit messages from file changes.
core/filter
Package filter provides services for filtering files based on include/exclude patterns and gitignore rules.
Package filter provides services for filtering files based on include/exclude patterns and gitignore rules.
core/index
Package index provides core indexing operations for documents and snapshots.
Package index provides core indexing operations for documents and snapshots.
core/model
Package model provides services for managing LLM model configurations and their capabilities.
Package model provides services for managing LLM model configurations and their capabilities.
core/preset
Package preset provides services for managing LLM provider presets with rate limiting and cost tracking.
Package preset provides services for managing LLM provider presets with rate limiting and cost tracking.
core/project
Package project provides services for inspecting git and workspace state.
Package project provides services for inspecting git and workspace state.
core/prompt
Package prompt provides services for generating prompts from templates with variable substitution.
Package prompt provides services for generating prompts from templates with variable substitution.
core/provider
Package provider provides services for managing LLM provider configurations (OpenAI, Anthropic, Gemini, etc.).
Package provider provides services for managing LLM provider configurations (OpenAI, Anthropic, Gemini, etc.).
core/pullrequest
Package pullrequest provides services for composing pull request descriptions from file changes.
Package pullrequest provides services for composing pull request descriptions from file changes.
core/ratelimit
Package ratelimit provides rate limiting services for LLM API calls with token-based and request-based limits.
Package ratelimit provides rate limiting services for LLM API calls with token-based and request-based limits.
core/retrieval
Package retrieval provides services for semantic search and retrieval of code chunks using vector similarity.
Package retrieval provides services for semantic search and retrieval of code chunks using vector similarity.
core/shutdown
Package shutdown provides graceful shutdown coordination for services and background operations.
Package shutdown provides graceful shutdown coordination for services and background operations.
core/summarize
Package summarize provides services for generating summaries of file changes using LLMs.
Package summarize provides services for generating summaries of file changes using LLMs.
core/task
Package task provides services for managing predefined tasks with prompts and configurations.
Package task provides services for managing predefined tasks with prompts and configurations.
core/vector
Package vector provides services for vector index operations including search and index building.
Package vector provides services for vector index operations including search and index building.
domain/commit
Package commit defines domain types for commit message generation.
Package commit defines domain types for commit message generation.
domain/config
Package config defines domain types for application configuration including providers, models, presets, and flows.
Package config defines domain types for application configuration including providers, models, presets, and flows.
domain/gateway
Package gateway defines domain types for LLM gateway interactions including requests, responses, and embeddings.
Package gateway defines domain types for LLM gateway interactions including requests, responses, and embeddings.
domain/git
Package git defines domain types for git operations and file changes.
Package git defines domain types for git operations and file changes.
domain/index
Package index defines domain types for document indexing including chunks, embeddings, and snapshots.
Package index defines domain types for document indexing including chunks, embeddings, and snapshots.
domain/indexservice
Package indexservice defines types used by the indexing service API.
Package indexservice defines types used by the indexing service API.
domain/model
Package model defines domain types for LLM model configurations and capabilities.
Package model defines domain types for LLM model configurations and capabilities.
domain/output
Package output defines domain types for output formatting and destinations.
Package output defines domain types for output formatting and destinations.
domain/preset
Package preset defines domain types for LLM provider presets with rate limits and cost tracking.
Package preset defines domain types for LLM provider presets with rate limits and cost tracking.
domain/provider
Package provider defines domain types for LLM provider configurations (OpenAI, Anthropic, Gemini, etc.).
Package provider defines domain types for LLM provider configurations (OpenAI, Anthropic, Gemini, etc.).
domain/pullrequest
Package pr defines domain types for pull request description generation.
Package pr defines domain types for pull request description generation.
domain/ratelimit
Package ratelimit defines domain types for API rate limiting including token budgets and request limits.
Package ratelimit defines domain types for API rate limiting including token budgets and request limits.
domain/summarize
Package summarize defines domain types for file change summarization.
Package summarize defines domain types for file change summarization.
domain/task
Package task defines domain types for predefined tasks with prompts and configurations.
Package task defines domain types for predefined tasks with prompts and configurations.
flows/ask
Package ask implements the workflow for answering questions about code using RAG.
Package ask implements the workflow for answering questions about code using RAG.
flows/commitmsg
Package commitmsg implements the workflow for generating commit messages from staged changes or branch diffs.
Package commitmsg implements the workflow for generating commit messages from staged changes or branch diffs.
flows/do
Package do implements the 'do' flow which orchestrates agent execution.
Package do implements the 'do' flow which orchestrates agent execution.
flows/index
Package index implements the workflow for indexing workspace files by computing embeddings and building vector indices.
Package index implements the workflow for indexing workspace files by computing embeddings and building vector indices.
flows/pr
Package pr implements the workflow for generating pull request descriptions from branch changes.
Package pr implements the workflow for generating pull request descriptions from branch changes.
flows/search
Package search implements the workflow for semantic code search using vector similarity.
Package search implements the workflow for semantic code search using vector similarity.
flows/write
Package write implements the workflow for generating arbitrary content using LLMs based on prompts and tasks.
Package write implements the workflow for generating arbitrary content using LLMs based on prompts and tasks.
ports
Package ports defines port interfaces for hexagonal architecture, decoupling core business logic from adapters.
Package ports defines port interfaces for hexagonal architecture, decoupling core business logic from adapters.
version
Package version provides build-time version information populated by the Go linker.
Package version provides build-time version information populated by the Go linker.
pkg
executor
Package executor provides a framework for executing activities and flows with retry logic and feedback.
Package executor provides a framework for executing activities and flows with retry logic and feedback.
gitignore
Package gitignore provides gitignore pattern matching functionality for filtering files.
Package gitignore provides gitignore pattern matching functionality for filtering files.
llama
Package llama provides an HTTP client for interacting with Llama model APIs (local and hosted).
Package llama provides an HTTP client for interacting with Llama model APIs (local and hosted).
voyage
Package voyage provides an HTTP client for the Voyage AI embedding API.
Package voyage provides an HTTP client for the Voyage AI embedding API.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL