A minimalist, powerful command-line task manager built with Python. Manage your todos efficiently without leaving your terminal.
curl -sSL https://raw.githubusercontent.com/TheDevOpsBlueprint/tix-cli/main/install.sh | bash
That's it! This smart installer (v8.0) will:
- β Detect your OS and shell automatically
- β Handle Python 3.12+ managed environments (PEP 668)
- β Install using pipx for isolation (recommended)
- β Configure shell completion automatically
- β Set up PATH correctly
- β Offer to restart your shell with everything ready
After installation, you can immediately use:
tix <TAB><TAB> # Tab completion works!
tix add "My task" # Start managing tasks!
- Fast & Simple: Add tasks with a single command
- Smart Installation: One-command setup that handles all environments
- Python 3.12+ Compatible: Works with externally-managed environments
- Persistent Storage: Tasks are saved locally in JSON format
- Priority Levels: Organize tasks by high, medium, or low priority
- Tags: Categorize tasks with custom tags
- Search & Filter: Find tasks quickly with powerful search
- Statistics: Track your productivity with built-in analytics
- Reports: Export your tasks in text or JSON format
- Colored Output: Beautiful terminal UI with rich formatting
- Bulk Operations: Mark multiple tasks as done at once
- Auto Shell Completion: Tab completion works out of the box for bash, zsh, and fish
- Attachments & Links: Attach files or add reference URLs to tasks
- Open Attachments: Use
tix open <id>
to quickly open all files/links for a task - Customizable Configuration: Personalize defaults, colors, aliases, and notifications via
~/.tix/config.yml
- Interactive TUI: Launch a full-screen terminal interface for task management
Works on macOS, Linux, and WSL with Python 3.7+:
curl -sSL https://raw.githubusercontent.com/TheDevOpsBlueprint/tix-cli/main/install.sh | bash
For macOS users with Homebrew-installed Python:
# Option 1: Install pipx first (recommended)
brew install pipx
pipx ensurepath
pipx install tix-cli
# Option 2: Use the smart installer (handles everything)
curl -sSL https://raw.githubusercontent.com/TheDevOpsBlueprint/tix-cli/main/install.sh | bash
# Install pipx if not already installed
python3 -m pip install --user pipx
python3 -m pipx ensurepath
# Install TIX
pipx install tix-cli
# Create virtual environment
python3 -m venv tix-env
source tix-env/bin/activate
# Install TIX
pip install tix-cli
# Clone
git clone https://github.com/TheDevOpsBlueprint/tix-cli.git
cd tix-cli
# Run installer (handles all environments)
./install.sh
# Or use Make
make # Runs smart installer
git clone https://github.com/TheDevOpsBlueprint/tix-cli.git
cd tix-cli
# Quick install for development
make quick-install
# Or with virtual environment
python3 -m venv venv
source venv/bin/activate
pip install -e .
If you see this error on Python 3.12+:
error: externally-managed-environment
Solution 1: Use the smart installer (recommended)
curl -sSL https://raw.githubusercontent.com/TheDevOpsBlueprint/tix-cli/main/install.sh | bash
Solution 2: Use pipx
brew install pipx # on macOS
pipx install tix-cli
Solution 3: Use virtual environment
python3 -m venv tix-env
source tix-env/bin/activate
pip install tix-cli
If tix
command is not found after installation:
# Add to your shell config (~/.bashrc or ~/.zshrc)
export PATH="$HOME/.local/bin:$PATH"
# Then reload
source ~/.bashrc # or ~/.zshrc
# Simple task
tix add "Write documentation"
# With priority (high/medium/low)
tix add "Fix critical bug" -p high
# With tags
tix add "Review PR" -t work -t urgent
# Multiple tags and priority
tix add "Deploy to production" -p high -t devops -t release
# With file attachments (can repeat)
tix add "Review design doc" -f ~/docs/design.pdf -f ~/notes.txt
# With reference links (can repeat)
tix add "Research API" -l https://api.example.com -l https://swagger.io
# Show active tasks
tix ls
# Show all tasks (including completed)
tix ls --all
tix ls -a
# Mark single task as done
tix done 1
# Mark multiple tasks as done
tix done-all 1 3 5
# Remove a single task
tix rm 1
# Force remove without confirmation
tix rm 2 --confirm
tix rm 2 -y
# Clear all completed tasks
tix clear --completed
# Clear all active tasks (careful!)
tix clear --active --force
# Undo the last operation (add, edit, delete, done, etc.)
tix undo
# Redo the last undone operation
tix redo
# Change task text
tix edit 1 --text "Updated task description"
# Change priority
tix priority 1 high
# Add/remove tags
tix edit 1 --add-tag urgent --remove-tag low-priority
# Multiple edits at once
tix edit 1 --text "New text" --priority high --add-tag important
# Add attachments and links to an existing task
tix edit 1 -f ~/extra.docx -l https://extra-resource.com
# Search by text
tix search "bug"
# Search with filters
tix search "api" -p high -t backend
# Filter by criteria
tix filter -p high # High priority tasks
tix filter -t urgent # Tasks tagged "urgent"
tix filter --active # Only active tasks
tix filter -a # Short form for active
tix filter --completed # Only completed tasks
tix filter -c # Short form for completed
# List all tags
tix tags
# Show untagged tasks
tix tags --no-tags
# Open all files and links attached to a task
tix open 1
# View statistics
tix stats
# Detailed statistics
tix stats --detailed
tix stats -d
# Generate text report
tix report
# Export as JSON
tix report --format json --output tasks.json
tix report -f json -o tasks.json
# Export as text file
tix report --output my-tasks.txt
All destructive operations (rm, clear) automatically create a backup before execution
# Create a timestamped backup
tix backup create
# Create a backup with a custom filename
tix backup create my-backup.json
# List all available backups
tix backup list
# Restore using top-level command (prompts for confirmation)
tix restore <file_name>
# Skip confirmation
tix restore <file_name> -y
# Equivalent grouped command
tix backup restore <file_name>
You can save commonly used filters so you donβt have to re-type them every time.
# Save a filter named "work" for high-priority tasks tagged "work"
tix filter save work -t work -p high
# Save filter for completed tasks
tix filter save done-only --completed
# Overwrite an existing filter (with --force)
tix filter save work -t work -p medium --force
# Show all saved filters
tix filter list
Example output:
Saved Filters:
β’ work β priority=high AND tag='work'
β’ done-only β completed
# Apply a saved filter
tix filter apply --saved work
# Apply directly without saving
tix filter apply -p high -t urgent
# Saved filter takes precedence over inline flags
tix filter apply --saved work -p low # will still use the saved 'work' filter
β‘ Saved filters are stored in ~/.tix/filters.json
.
You can edit/remove the file manually, but itβs recommended to use the CLI commands.
Tab completion works automatically after installation:
# Complete commands
tix <TAB><TAB>
# Shows: add clear done done-all edit filter ls move priority report rm search stats tags undo
# Complete options
tix add --<TAB><TAB>
# Shows: --priority --tag --help
# Complete option values
tix add --priority <TAB><TAB>
# Shows: high low medium
Tasks are stored in ~/.tix/tasks.json
in your home directory.
Example structure:
{
"next_id": 4,
"tasks": [
{
"id": 1,
"text": "Fix critical bug",
"priority": "high",
"completed": false,
"created_at": "2025-01-17T10:30:00",
"completed_at": null,
"tags": ["bug", "urgent"]
}
]
}
Command | Description | Example |
---|---|---|
add |
Add a new task | tix add "Task" -p high -t work -f file.txt -l https://example.com |
ls |
List tasks | tix ls --all |
done |
Complete a task | tix done 1 |
done-all |
Complete multiple tasks | tix done-all 1 2 3 |
rm |
Remove a task | tix rm 1 -y |
clear |
Clear tasks in bulk | tix clear --completed |
edit |
Edit task properties | tix edit 1 --text "New" -f notes.md -l https://example.com |
priority |
Change task priority | tix priority 1 high |
move |
Change task ID | tix move 1 10 |
undo |
Reactivate completed task | tix undo 1 |
search |
Search tasks by text | tix search "bug" |
filter |
Filter by criteria | tix filter -p high |
tags |
List all tags | tix tags |
stats |
Show statistics | tix stats -d |
report |
Generate report | tix report -f json -o tasks.json |
open |
Open attachments and links for a task | tix open 1 |
config |
Manage configuration | tix config show , tix config set defaults.priority high |
interactive |
Launch interactive TUI | tix interactive |
To completely remove TIX from your system:
# If installed from source with Makefile
make uninstall
# Or manually uninstall based on installation method
pipx uninstall tix-cli
rm -rf ~/.tix # Remove task data (optional)
pip uninstall tix-cli -y
# or
pip3 uninstall tix-cli -y
rm -rf ~/.tix # Remove task data (optional)
# Deactivate and remove the virtual environment
deactivate
rm -rf tix-env # or whatever you named your venv
rm -rf ~/.tix # Remove task data (optional)
# Remove TIX completion from your shell config
# For bash: edit ~/.bashrc or ~/.bash_profile
# For zsh: edit ~/.zshrc
# For fish: rm ~/.config/fish/completions/tix.fish
# Remove lines containing:
# - TIX Completion
# - _tix_simple
# - complete -F _tix_simple tix
# Save your tasks before removing TIX
tix report -f json -o my-tasks-backup.json
# or
cp ~/.tix/tasks.json my-tasks-backup.json
TIX supports extensive customization through a YAML configuration file located at ~/.tix/config.yml
.
Initialize the configuration file with defaults:
tix config init
Or manually create ~/.tix/config.yml
using the example below.
Set default values for new tasks:
defaults:
priority: medium # Default priority: low, medium, high
tags: [] # Default tags to add to every task
Example with default tags:
defaults:
priority: high
tags:
- work
- urgent
Customize terminal colors:
colors:
priority:
low: green
medium: yellow
high: red
status:
active: blue
completed: green
tags: cyan
Create shortcuts for commands:
aliases:
l: ls # tix l β tix ls
a: add # tix a "task" β tix add "task"
d: done # tix d 1 β tix done 1
r: rm # tix r 1 β tix rm 1
e: edit # tix e 1 β tix edit 1
p: priority # tix p 1 high β tix priority 1 high
s: search # tix s "query" β tix search "query"
f: filter # tix f -p high β tix filter -p high
Control notification verbosity:
notifications:
enabled: true # Master switch
on_creation: true # Show when creating tasks
on_update: true # Show detailed updates
on_completion: true # Show when completing tasks
Customize task list appearance:
display:
show_ids: true # Show task IDs
show_dates: false # Show creation dates
compact_mode: false # Compact view (hide tags column)
max_text_length: 0 # Truncate text (0 = no limit)
# Initialize config file
tix config init
# Show current configuration
tix config show
# Show specific config value
tix config show -k defaults.priority
# Set a configuration value
tix config set defaults.priority high
tix config set defaults.tags "[work, urgent]"
# Get a configuration value
tix config get defaults.priority
# Edit config in your default editor
tix config edit
# Show config file path
tix config path
# Reset to defaults
tix config reset
tix config reset -y # Skip confirmation
See config.example.yml
in the repository for a complete example with comments.
# Set custom storage location (optional)
export TIX_HOME=/custom/path
Make sure ~/.local/bin
is in your PATH:
# Add to ~/.bashrc or ~/.zshrc
export PATH="$HOME/.local/bin:$PATH"
# Clone repository
git clone https://github.com/TheDevOpsBlueprint/tix-cli.git
cd tix-cli
# Use make for easy setup
make setup # Creates venv and installs everything
# Or manually
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -e .
# Run tests
make test
# Or
pytest tests/ -v
# Run with coverage
make test-coverage
# Or
pytest tests/ -v --cov=tix --cov-report=term-missing
tix-cli/
βββ install.sh # Smart installer v8.0 (PEP 668 compatible)
βββ tix/
β βββ __init__.py
β βββ cli.py # Main CLI with auto-completion
β βββ models.py # Task data model
β βββ commands/
β β βββ __init__.py
β β βββ stats.py # Statistics module
β βββ storage/
β βββ __init__.py
β βββ json_storage.py # Storage backend
βββ tests/
β βββ __init__.py
β βββ test_cli.py
β βββ test_models.py
β βββ test_storage.py
β βββ test_completion.py
βββ setup.py # Package configuration
βββ Makefile # Developer commands
βββ requirements.txt
βββ pyproject.toml # Python tooling config
βββ .flake8 # Linting configuration
βββ README.md
The project includes GitHub Actions workflows for:
- Testing across Python 3.8-3.12
- Code quality checks (flake8, black, isort)
- Building distribution packages
- Installation testing on Ubuntu and macOS
- Coverage reporting with Codecov
# Morning: Add today's tasks
tix add "Team standup meeting" -p high -t work
tix add "Review pull requests" -p medium -t work
tix add "Fix login bug" -p high -t bug -t urgent
tix add "Update documentation" -p low -t docs
# Check your tasks
tix ls
# Complete tasks
tix done 1
tix done 3
# End of day: View progress
tix stats
# Generate report
tix report --output daily-report.txt
# Add project tasks with tags
tix add "Design database schema" -p high -t project-x -t backend
tix add "Create API endpoints" -p high -t project-x -t backend
tix add "Write unit tests" -p medium -t project-x -t testing
tix add "Setup CI/CD pipeline" -p medium -t project-x -t devops
# View project tasks
tix filter -t project-x
# Search within project
tix search "API" -t project-x
Issue: "externally-managed-environment" error
- Use the smart installer:
curl -sSL .../install.sh | bash
- Or use pipx:
pipx install tix-cli
Issue: tix: command not found
# Add to PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Issue: Permission denied
# Use user installation
pip install --user tix-cli
Issue: Tab completion not working
# For bash, check if completion is loaded
grep "_tix_simple" ~/.bashrc
# If not found, re-run installer
curl -sSL https://raw.githubusercontent.com/TheDevOpsBlueprint/tix-cli/main/install.sh | bash
# Or manually add completion (bash)
source ~/.bashrc
Issue: Tasks not persisting
# Check storage file exists
ls -la ~/.tix/tasks.json
# Check permissions
chmod 644 ~/.tix/tasks.json
We welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Keep changes focused and small
- Write tests for new features
- Ensure all tests pass (
make test
) - Submit a Pull Request
MIT License - see LICENSE file for details.
Built with:
- Click - CLI framework with native completion support
- Rich - Terminal formatting
- Python - Programming language
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: valentin.v.todorov@gmail.com
If you find TIX useful, please consider giving it a star on GitHub!
Made with β€οΈ by TheDevOpsBlueprint
Enjoy lightning-fast task management with TIX!