Skip to content

bnaylor/sharpei

Repository files navigation

Sharpei

A focused, local-first TODO application inspired by MyTinyTodo.

Sharpei runs entirely on your machine with no cloud dependencies, stores data in SQLite for easy AI/agent access, and provides a clean, responsive UI for managing tasks, and an MCP server for direct AI agent manipulation.

Sharpei screenshot

Features

  • Local-first - Runs on localhost, no internet required
  • SQLite storage - Simple, portable database that AI tools can read
  • Calendar View - Interactive monthly grid to visualize deadlines
  • Bulk Actions - Multi-select tasks for group updates (move, priority, delete)
  • Task Recurrence - Automatically repeating tasks (daily, weekly, custom)
  • Smart Categories - Save search queries as persistent sidebar items
  • Advanced Search - Filter by status (is:overdue), priority, and more
  • PWA Support - Install as a standalone desktop app with offline caching
  • Data Portability - JSON export/import and automated daily backups
  • Markdown notes - Capture details about your tasks in markdown syntax
  • Subtasks - Break down tasks into smaller items
  • Hashtags - Tag tasks for easy filtering
  • Quick-add syntax - Rapidly create tasks with !priority #tags @dates *recur >Category
  • MCP server - AI assistant integration via Model Context Protocol
  • Dark Mode - Full support for light and dark themes

Quick Start

# Clone the repo
git clone https://github.com/bnaylor/sharpei.git
cd sharpei

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Run the app
python sharpei.py

The app opens automatically at http://127.0.0.1:8000

Remote Hosting

Sharpei is designed for local-first use, but you can also host the backend on a remote server and connect to it from any browser or PWA. Local-first remains the default.

Running the Backend for Remote Access

To allow remote connections, start the backend with the --host and --api-key arguments:

python sharpei.py --host 0.0.0.0 --api-key YOUR_SECRET_KEY
Argument Description Default
--host Interface to bind to (0.0.0.0 for all) 127.0.0.1
--port Port number to listen on 8000
--api-key Secret key required for API access None
--ssl-cert Path to SSL certificate (for HTTPS) None
--ssl-key Path to SSL key (for HTTPS) None
--no-browser Skip opening the browser on startup false

Connecting from the UI

  1. Open the Sharpei UI.
  2. Click the Settings (gear icon) in the top right corner.
  3. Under Remote Backend:
    • Enter your Remote API URL (e.g., https://sharpei.example.com:8000).
    • Enter your API Key.
  4. Click Save Settings.

The UI will now use the remote backend for all operations. This configuration is saved in your browser's local storage.

Quick-Add Syntax

Create tasks rapidly from the input field:

Call dentist @tomorrow !high #health
Submit timesheet *weekly @friday >Work
Water plants *3d @tomorrow
Element Syntax Examples
Priority !high !low !high, !h, !low, !l
Hashtags #tag #work #urgent
Due date @date @today, @monday, @+3d, @2025-02-15
Recurrence *pattern *daily, *weekly, *monthly, *3d, *2w
Category >name >Work, >Personal

See doc/quick-add.md for full documentation.

Keyboard Shortcuts

Shortcut Action
Ctrl+Shift+A Archive completed tasks
Ctrl+Shift+H Toggle archived tasks visibility
Ctrl+Shift+D Toggle details view

MCP Server

Sharpei includes an MCP server for AI assistant integration:

python mcp_server.py

See doc/mcp.md for full documentation.

Testing

# Run all tests (125 total)
pytest

Documentation

Credits

Built with assistance from Gemini 3 and Claude Opus 4.5.

License

Apache 2.0 License - see LICENSE for details.

About

Sharpei Todo Management

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors