Skip to main content

Homer ๐Ÿ 

Homer is a personal productivity CLI for developers, providing native integrations with Jira and Clockify from your terminal.

๐Ÿ“š Documentation Quick Links

Need help navigating? โ†’ DOCUMENTATION.md - Complete documentation index

New to Homer? Start here:

For detailed guidance:

Features

โฑ๏ธ Clockify Time Tracking

  • Start/stop timers with descriptions, projects, and tags
  • View current timer with elapsed time
  • Generate reports - summary and detailed time breakdowns by project/tag/date
  • Auto-create missing projects and tags

๐ŸŽฏ Jira Issue Management

  • List your open issues (assigned, not Done)
  • View issue details with description, status, priority, assignee
  • Create new issues with project, type, description, priority
  • Comment on issues
  • Mention team members in comments with automatic user lookup

Installation

Requirements

  • Python 3.12+
  • Jira and Clockify API credentials

Install with pipx (Recommended)

pipx installs Homer in an isolated environment and makes the homer command globally available โ€” nothing to activate.

pipx install homer-cli

Install with pip

pip install homer-cli
# or into a virtualenv:
python3 -m venv ~/.venvs/homer && source ~/.venvs/homer/bin/activate
pip install homer-cli

Install from source (development)

git clone https://github.com/marcelohfonseca/homer-cli.git
cd homer
pdm install
pdm run homer --help

After installation

homer --version   # confirm it's installed
homer init        # interactive credential setup

Homer CLI after installation

See INSTALL.md for detailed instructions, credential gathering guide, and troubleshooting.

Quick Start

Clockify Timer

Start timing your current task:

homer clockify start "Fixing login bug"

With project and tags:

homer clockify start "Code review" --project "web-api" --tags "review,urgent"

Check what you're working on:

homer clockify current

Stop all running timers:

homer clockify stop

Clockify Reports

View a summary by project:

homer clockify summary 2024-01-01 2024-01-31

With filters:

homer clockify summary 2024-01-01 2024-01-31 --project "web-api" --group-by DATE

Detailed time entries:

homer clockify detailed 2024-01-01 2024-01-31

Jira Issues

List your open issues:

homer jira list

View issue details:

homer jira view NDI-123

Create a new issue:

homer jira create "Fix login bug"

With more options:

homer jira create "Implement auth" \
  --project WEB \
  --type Story \
  --priority High \
  --description "Add JWT authentication to API"

Add a comment:

homer jira comment NDI-123 "This is ready for QA"

Mention a team member:

homer jira mention NDI-123 "alice" "Can you review this?"

Commands Reference

Global

  • homer init - Initialize configuration (~/.env)
  • homer --help - Show all available commands

Clockify

Timer Commands

  • homer clockify start DESCRIPTION [OPTIONS] - Start a timer

    • --project NAME, -p - Project name (auto-creates if missing)
    • --tags TAGS, -t - Comma-separated tag list (auto-creates if missing)
  • homer clockify current - Show currently running timer

  • homer clockify stop - Stop all running timers

Report Commands

  • homer clockify summary DATE_FROM DATE_TO [OPTIONS] - Summary report

    • Format: YYYY-MM-DD
    • --project NAME, -p - Filter by project name
    • --tags NAME, -t - Filter by tag name
    • --group-by STRATEGY, -g - Grouping: DATE, PROJECT, TAG (default: PROJECT)
  • homer clockify detailed DATE_FROM DATE_TO [OPTIONS] - Detailed report

    • Format: YYYY-MM-DD
    • --project NAME, -p - Filter by project name
    • --tags NAME, -t - Filter by tag name

Jira

Issue Commands

  • homer jira list - List your open issues

  • homer jira view KEY - View issue details

    • Example: homer jira view NDI-123
  • homer jira create SUMMARY [OPTIONS] - Create a new issue

    • --project KEY, -p - Project key (default: NDI)
    • --type TYPE, -t - Issue type: Story, Bug, Task, etc. (default: Story)
    • --description TEXT, -d - Issue description
    • --assignee ACCOUNT_ID, -a - Assignee (default: you)
    • --priority LEVEL - Priority: Highest, High, Medium, Low, Lowest
  • homer jira comment KEY MESSAGE - Add comment to issue

    • Example: homer jira comment NDI-123 "This looks good"
  • homer jira mention KEY USERNAME MESSAGE - Mention user in comment

    • Automatically finds the user by name/email
    • Example: homer jira mention NDI-123 "john" "Can you review?"

Usage Examples

Typical Workflow

Morning standup:

homer jira list              # See what's assigned to you

Start working on an issue:

homer clockify start "Implementing user authentication" \
  --project "web-api" \
  --tags "backend,feature"

During the day:

homer clockify current       # Check time spent
homer clockify stop          # Stop timer before meeting
homer clockify start "Team meeting" --project "admin"

Update issue status:

homer jira view NDI-123      # Check current status
homer jira comment NDI-123 "Ready for code review"
homer jira mention NDI-123 "alice" "Please review when you get a chance"

End of week report:

# Summary by project
homer clockify summary 2024-01-29 2024-02-02 --group-by PROJECT

# Detailed breakdown
homer clockify detailed 2024-01-29 2024-02-02

Advanced Examples

Filter reports by project:

homer clockify summary 2024-01-01 2024-01-31 --project "web-api"

Group by multiple dimensions:

homer clockify summary 2024-01-01 2024-01-31 --group-by "DATE,PROJECT"

Create issue with all options:

homer jira create "Critical bug in production" \
  --project NDI \
  --type Bug \
  --priority Highest \
  --description "Users cannot log in via LDAP. Stack trace: ..."

Comment workflow:

# First add a comment
homer jira comment NDI-456 "Implementation complete"

# Then mention specific people
homer jira mention NDI-456 "qa_team" "Ready for testing"

Configuration

Homer stores configuration in ~/.env:

JIRA_BASE_URL=https://company.atlassian.net
JIRA_USER=john@company.com
JIRA_API_TOKEN=your_api_token_here

CLOCKIFY_API_KEY=your_api_key
CLOCKIFY_WORKSPACE=workspace_id
CLOCKIFY_USER=your_clockify_user_id  # alphanumeric ID, NOT your email โ€” get it from: curl -H "X-Api-Key: YOUR_KEY" https://api.clockify.me/api/v1/user | grep '"id"'

To update configuration:

homer init

You can also edit ~/.env directly with your preferred editor.

Documentation

For more detailed information, see:

Development

Run Tests

pdm run pytest tests/ -v

Run Linting & Type Checking

pdm run ruff check .
pdm run mypy src/

Note: Requires ruff and mypy in your dev environment. Install them with:

pip install ruff mypy

Project Structure

homer/
โ”œโ”€โ”€ src/homer/
โ”‚   โ”œโ”€โ”€ cli.py                 # Root CLI app
โ”‚   โ”œโ”€โ”€ config.py              # Settings & environment
โ”‚   โ”œโ”€โ”€ exceptions.py          # Error types
โ”‚   โ”œโ”€โ”€ clockify/              # Clockify integration
โ”‚   โ”‚   โ”œโ”€โ”€ client.py          # HTTP client
โ”‚   โ”‚   โ”œโ”€โ”€ service.py         # Business logic
โ”‚   โ”‚   โ”œโ”€โ”€ commands.py        # CLI commands
โ”‚   โ”‚   โ””โ”€โ”€ models.py          # Pydantic models
โ”‚   โ””โ”€โ”€ jira/                  # Jira integration
โ”‚       โ”œโ”€โ”€ client.py          # HTTP client
โ”‚       โ”œโ”€โ”€ service.py         # Business logic
โ”‚       โ”œโ”€โ”€ commands.py        # CLI commands
โ”‚       โ””โ”€โ”€ models.py          # Pydantic models
โ”œโ”€โ”€ tests/                     # Comprehensive test suite
โ”œโ”€โ”€ pyproject.toml             # Project config
โ””โ”€โ”€ README.md                  # This file

Architecture

Homer follows a layered architecture with clean separation of concerns:

Models Layer

Type-safe Pydantic models for API contracts and domain entities.

Client Layer

HTTP clients (using httpx) that handle:

  • Authentication
  • Request/response serialization
  • Error handling
  • API-specific quirks

Service Layer

Business logic orchestration:

  • Workflow coordination
  • Data transformation
  • Default values
  • No I/O operations

CLI Layer

Command-line interface:

  • Argument parsing (Typer)
  • Output formatting (Rich)
  • Error to message conversion

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Add tests for new functionality
  4. Ensure all tests pass: pdm run pytest tests/
  5. Commit changes (git commit -m 'Add amazing feature')
  6. Push to branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

License

This project is licensed under the MIT License - see LICENSE file for details.

Support

For issues, questions, or suggestions:

  • Open an issue on GitHub
  • Check existing documentation
  • Review test files for usage examples

Roadmap

Phase 5+

  • Jira transitions (move issues between statuses)
  • Jira watchers (add/remove issue observers)
  • Jira labels (add/remove issue labels)
  • Custom Jira fields support
  • Clockify/Jira integration (link time entries to issues)
  • Terminal-based UI for interactive workflows
  • Webhook support for real-time updates

Made with โค๏ธ for developers by developers

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

homer_cli-0.1.7.tar.gz (40.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

homer_cli-0.1.7-py3-none-any.whl (29.0 kB view details)

Uploaded Python 3

File details

Details for the file homer_cli-0.1.7.tar.gz.

File metadata

  • Download URL: homer_cli-0.1.7.tar.gz
  • Upload date:
  • Size: 40.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.4

File hashes

Hashes for homer_cli-0.1.7.tar.gz
Algorithm Hash digest
SHA256 2a6cdf5d2623e723e9ea5ee0f43bbb39b472ce3ccd5174dd24a2e7ee07cf63e8
MD5 644dc31fc6129f8dadc70432e8b5330e
BLAKE2b-256 77e471a234a95c828351353334566084c10a0042a0603023b3ec3de95711d03d

See more details on using hashes here.

File details

Details for the file homer_cli-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: homer_cli-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 29.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.4

File hashes

Hashes for homer_cli-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 13bb33cc0dad705175a55d5ffed1da78cd4ce45da4d358f0f7c0b4f5b737b3cf
MD5 fb4ff3b7c302583af348cfd5548be169
BLAKE2b-256 48cc92afd2400c554517abba5414d47fde1835bfdc358e12b3fe57969b315851

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page