Never forget how you fixed that mysterious bug again!
Noteerr is a CLI tool that automatically logs, annotates, and recalls command errors. Think of it as a "command error memory bank" that helps you track mistakes and their solutions.
# Winget (Windows 10/11)
winget install YourPublisher.Noteerr
# Chocolatey
choco install noteerr
# Or double-click install.bat# Homebrew
brew install noteerr
# Or run installer
bash install.sh# Homebrew
brew install noteerr
# pip (all platforms)
pip install noteerrWindows: Double-click install.bat
macOS/Linux: bash install.sh
π See INSTALL.md for detailed instructions | Distribution Guide
- π― Automatic Error Capture - Logs failed commands with exit codes and error messages
- π Annotation System - Add notes about fixes and workarounds
- π Powerful Search - Find errors by command, error text, notes, or tags
- π·οΈ Tag Management - Categorize errors (git, npm, docker, etc.)
- π Statistics - Track most common errors and troublesome commands
- π Command Replay - Re-execute previous failing commands
- π¨ Rich Terminal UI - Beautiful, colored output with tables
- π Shell Integration - Auto-capture for Bash, Zsh, and PowerShell
- π Copy to Clipboard - Copy error details in text, markdown, or JSON format (New in v1.1.0)
- π Smart Duplicate Detection - Prevents saving duplicate errors automatically (New in v1.1.0)
- π Project Organization - Tag errors by project for multi-project management (New in v1.1.0)
- Download/Clone this repository
- Double-click
install.bat - Restart your terminal
- Done! Run
noteerr --version
No terminal needed! Just double-click and go.
# Download and install
git clone https://github.com/yourusername/noteerr.git
cd noteerr
bash install.sh
# Restart terminal, verify
noteerr --versionpip install noteerr# Automatic PATH fixer
noteerr install --check-pathClick for advanced installation options
# 1. Clone or download the repository
git clone https://github.com/yourusername/noteerr.git
cd noteerr
# 2. Run the installer (handles everything automatically)
.\install.ps1
# 3. Close and reopen your terminal, then verify:
noteerr --version# Install with pip
pip install --user -e .
# Fix PATH if noteerr is not recognized
noteerr install --check-path# Install with pip
pip install --user -e .
# Or install from PyPI (once published)
pip install noteerrFirst time setup? If noteerr command is not found:
# Run the built-in PATH checker
python -m noteerr install --check-path# Run a command that fails, then save it
npm start || noteerr save "forgot to run npm install"
# List recent errors
noteerr list
# Search for specific errors
noteerr search "npm"
# Show detailed error info
noteerr show 1
# Add notes to an error
noteerr annotate 1 "fixed by running npm install"# Save with manual note
your-command || noteerr save "description of the fix"
# Save with tags
noteerr save "permission issue" --tags docker,linux
# Save with project name (v1.1.0+)
noteerr save "error description" --project myapp
# Force save even if duplicate detected (v1.1.0+)
noteerr save "error description" --force
# Save with specific command and error
noteerr save --command "git push" --error "rejected" "need to pull first"# List recent errors (default: 10)
noteerr list
# List all errors
noteerr list --all
# List with custom limit
noteerr list --limit 20
# Filter by tag
noteerr list --tag git
# Filter by project (v1.1.0+)
noteerr list --project myapp
# Search by any text
noteerr search "permission denied"
# Show detailed error
noteerr show 5# Copy error in text format
noteerr copy 1
# Copy in markdown format
noteerr copy 1 --format markdown
# Copy in JSON format
noteerr copy 1 --format json# List all projects with error counts
noteerr projects
# Save error with project
noteerr save "bug description" --project frontend
# List errors for specific project
noteerr list --project backend# Add notes to an error
noteerr annotate 1 "run npm install first"
# Add notes with tags
noteerr annotate 1 "updated Node version" --tags npm,node
# Delete an error
noteerr delete 1
# Clear all errors (be careful!)
noteerr clear# Re-run a previous command
noteerr rerun 5
# Dry run (show without executing)
noteerr rerun 5 --dry-run
# View statistics
noteerr stats
# Stats for specific tag
noteerr stats --tag dockerEnable automatic error capture by adding integration to your shell:
Add to ~/.bashrc:
source /path/to/noteerr/scripts/bash-integration.shAdd to ~/.zshrc:
source /path/to/noteerr/scripts/zsh-integration.shAdd to your PowerShell profile ($PROFILE):
. C:\path\to\noteerr\scripts\powershell-integration.ps1After integration, you get these handy aliases:
neβnoteerr save(quick save)nelβnoteerr list(quick list)nesβnoteerr search(quick search)
$ git push
! [rejected] main -> main (fetch first)
$ noteerr save "remote has changes I don't have" --tags git
β Saved error #1
Command: git push
Error: ! [rejected] main -> main (fetch first)
Notes: remote has changes I don't have
Tags: [git]
$ noteerr annotate 1 "always git pull before push"
β Updated error #1$ npm start
Error: missing script: start
$ noteerr save "package.json missing start script" --tags npm
β Saved error #2
# Later, search for npm issues
$ noteerr search npm
Found 1 error(s) matching 'npm':
ID Command Error Date
2 npm start Error: missing script: start 2026-02-05$ docker ps
permission denied while trying to connect to Docker daemon
$ noteerr save "need to add user to docker group" --tags docker,linux
β Saved error #3
$ noteerr annotate 3 "run: sudo usermod -aG docker $USER"
β Updated error #3
# Later, fix a similar issue
$ noteerr search docker
$ noteerr show 3
# View the solution you documented before!Noteerr stores all data in JSON format at:
- Linux/Mac:
~/.noteerr/errors.json - Windows:
C:\Users\YourName\.noteerr\errors.json
{
"entries": [
{
"id": 1,
"timestamp": "2026-02-05T10:33:00",
"command": "npm start",
"error": "missing script: start",
"exit_code": 1,
"directory": "/home/user/project",
"notes": "run npm install first",
"tags": ["npm", "javascript"]
}
],
"next_id": 2
}Noteerr uses Rich library for gorgeous terminal UI:
- β Color-coded output (errors in red, commands in cyan)
- π Pretty tables for listing errors
- π¦ Paneled views for detailed error information
- π― Syntax highlighting where appropriate
Search across:
- Command names
- Error messages
- Your notes
- Tags
Track:
- Total errors logged
- Most common failing commands
- Recent error trends
- Tag usage statistics
Noteerr follows a clean layered architecture for maintainability and extensibility:
graph TB
subgraph UI["π₯οΈ User Interface Layer"]
CLI[CLI Commands<br/>Click Framework]
Shell[Shell Integration<br/>Bash/Zsh/PowerShell]
end
subgraph Core["βοΈ Core Logic Layer"]
CLI --> Commander[Command Handler<br/>cli.py]
Shell --> Commander
Commander --> Storage[Storage Manager<br/>storage.py]
Commander --> Utils[Utilities<br/>utils.py]
Storage --> Models[Data Models<br/>models.py]
end
subgraph Data["πΎ Data Persistence Layer"]
Storage --> JSON[(JSON Database<br/>~/.noteerr/errors.json)]
end
subgraph Features["β¨ Feature Modules"]
Commander --> Save[πΎ Save Errors]
Commander --> List[π List Errors]
Commander --> Search[π Search]
Commander --> Stats[π Statistics]
Commander --> Annotate[βοΈ Annotate]
Commander --> Rerun[π Rerun Commands]
end
subgraph Output["π¨ Presentation Layer"]
Commander --> Rich[Rich Terminal UI<br/>Tables & Panels<br/>Color Coding]
end
style CLI fill:#4CAF50,stroke:#2E7D32,stroke-width:3px,color:#fff
style Shell fill:#2196F3,stroke:#1565C0,stroke-width:3px,color:#fff
style JSON fill:#FF9800,stroke:#E65100,stroke-width:3px,color:#fff
style Commander fill:#9C27B0,stroke:#6A1B9A,stroke-width:3px,color:#fff
style Rich fill:#E91E63,stroke:#AD1457,stroke-width:3px,color:#fff
style Storage fill:#00BCD4,stroke:#006064,stroke-width:2px,color:#fff
style Models fill:#00BCD4,stroke:#006064,stroke-width:2px,color:#fff
style Utils fill:#00BCD4,stroke:#006064,stroke-width:2px,color:#fff
Key Components:
- CLI/Shell Layer: Entry points for user interaction
- Command Handler: Processes all user commands and coordinates actions
- Storage Manager: Handles all data persistence operations
- Data Models: Defines the structure of error entries
- Rich UI: Provides beautiful terminal output with colors and formatting
For detailed architecture documentation, see PROJECT_STRUCTURE.md.
# Build the package
python -m build
# Upload to PyPI
python -m twine upload dist/*
# Users can then install with:
pip install noteerr# Tag a release
git tag -a v1.0.0 -m "Release v1.0.0"
git push origin v1.0.0
# Users can install from GitHub
pip install git+https://github.com/yourusername/noteerr.git# Install PyInstaller
pip install pyinstaller
# Create executable
pyinstaller --onefile src/noteerr/cli.py
# Distributable executable in dist/# Clone the repository
git clone https://github.com/yourusername/noteerr.git
cd noteerr
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in editable mode
pip install -e .
# Run noteerr
noteerr --helpnoteerr/
βββ src/
β βββ noteerr/
β βββ __init__.py
β βββ cli.py # Main CLI interface
β βββ storage.py # JSON storage backend
β βββ models.py # Data models
β βββ utils.py # Utility functions
βββ scripts/
β βββ bash-integration.sh
β βββ zsh-integration.sh
β βββ powershell-integration.ps1
βββ setup.py
βββ pyproject.toml
βββ requirements.txt
βββ LICENSE
βββ README.md
Solution: Close and reopen your terminal (PATH changes require new session)
Or use the automatic fixer:
noteerr install --check-path
# Or: python -m noteerr install --check-path- Install Python from python.org
- β Check "Add Python to PATH" during installation
- Restart terminal
python -m ensurepip --upgradeAdd --user flag:
pip install --user -e .- Windows: Requires PowerShell (not Command Prompt)
- macOS: Requires
pbcopy(should be installed by default) - Linux: Requires
xclip- install withsudo apt install xclip
Make sure you've sourced the integration script in your shell config:
PowerShell: Add to $PROFILE
noteerr install --shell powershellBash/Zsh: Add to ~/.bashrc or ~/.zshrc
noteerr install --shell bash- π Read INSTALL.md for detailed installation guide
- π Check EXAMPLES.md for usage examples
- π Open an issue on GitHub
- π‘ See NEW_FEATURES.md for v1.1.0 features
Contributions are welcome! Feel free to:
- Report bugs
- Suggest features
- Submit pull requests
MIT License - see LICENSE file for details.
Every developer faces the same frustrating situation:
"I fixed this error 3 months ago... how did I do it again?"
Noteerr solves this by creating a personal knowledge base of your mistakes and solutions. It's like having a second brain that remembers every error you've ever encountered and how you fixed it.
Save hundreds of hours by instantly recalling solutions instead of re-googling the same problems!
- Export to Markdown for sharing with team
- Integration with fzf for fuzzy search
- Cloud sync across machines
- AI-powered solution suggestions
- Team collaboration features
- Web dashboard for visualization
Made with β€οΈ by developers who are tired of making the same mistakes twice.
Star β this repo if Noteerr saves you time!