- Refactor logger package to use Go's slog for JSON-structured logs - Add configurable log levels (debug, info, warn, error) via config and flags - Integrate logging across commands, git operations, and API client with metrics like timing and sizes - Update README with logging documentation and usage examples - Add global --debug and --verbose flags - Enhance tests for logger initialization, levels, and structured output
3.1 KiB
3.1 KiB
Grokkit
Grokkit is a fast Go CLI integrating Grok AI with git workflows and general chat/edit.
🚀 Quick Start
export XAI_API_KEY=sk-...
# Install from source
git clone https://github.com/yourusername/grokkit.git
cd grokkit
make install
# Or build locally
make build
grokkit --help
📁 Config (optional)
~/.config/grokkit/config.toml:
default_model = "grok-4"
temperature = 0.7
timeout = 60 # seconds
log_level = "info" # debug, info, warn, error
[aliases]
beta = "grok-beta-2"
[chat]
history_file = "~/.config/grokkit/chat_history.json"
Logs are written to ~/.config/grokkit/grokkit.log in JSON format for structured analysis.
Commands
💬 grokkit chat
Interactive CLI chat with Grok. Features persistent history across sessions.
grokkit chat
grokkit chat -m grok-beta # Use specific model
📝 grokkit commitmsg
Generate conventional commit from staged changes.
git add .
grokkit commitmsg
✅ grokkit commit
Generate & commit.
grokkit commit
🔍 grokkit review
AI code review of staged changes.
grokkit review
📋 grokkit pr-describe
PR description from branch vs main.
grokkit pr-describe
📜 grokkit history
Summarize recent commits.
grokkit history
✏️ grokkit edit FILE "instruction"
AI edit file.
grokkit edit main.go "add error handling"
Shell Completions
Generate shell completions for your shell:
# Bash
grokkit completion bash > /etc/bash_completion.d/grokkit
# Zsh
grokkit completion zsh > "${fpath[1]}/_grokkit"
# Fish
grokkit completion fish > ~/.config/fish/completions/grokkit.fish
# PowerShell
grokkit completion powershell > grokkit.ps1
Flags
--model, -m: Specify model (e.g., grok-4, grok-beta)--debug: Enable debug logging (outputs to both stderr and log file)--verbose, -v: Enable verbose logging- All flags are global and work with any command
Features
- ✅ Structured logging with slog - JSON logs with request tracing, timing, and context
- ✅ Context-aware HTTP requests with timeouts
- ✅ Comprehensive error handling and custom error types
- ✅ Persistent chat history across sessions
- ✅ Configurable temperature and parameters
- ✅ Shell completions (bash, zsh, fish, powershell)
- ✅ Test coverage >70%
- ✅ CI/CD with Gitea Actions
- ✅ Interface-based design for testability
Logging & Observability
Grokkit uses Go's standard log/slog for structured logging:
# Enable debug mode (logs to both stderr and file)
grokkit chat --debug
# View logs
tail -f ~/.config/grokkit/grokkit.log
# Parse JSON logs with jq
cat ~/.config/grokkit/grokkit.log | jq 'select(.level=="ERROR")'
Logged metrics:
- API request/response timing and sizes
- Git command execution and output
- File operations with size tracking
- Error context with stack traces
Development
# Run tests
make test
# Run tests with coverage
make test-cover
# Build
make build
# Install locally
make install