Skip to main content

A privacy-focused goal tracking application

Project description

priv-goals

A privacy-focused goal-tracking application that runs locally on your machine. Track your goals, habits, and tasks with the help of AI, without sharing your data with third-party servers (NOTE: depends on your chosen configuration).

[UNDER DEVELOPMENT] This project is currently under development and not yet ready for active use. Bare functionality is implemented and available for exploration. Please check back later for updates.

Features

  • 🔒 Privacy First: All data stored locally by default
  • 🤖 AI-Powered: Uses your preferred LLM for natural interaction
  • 📊 Flexible Storage: Choose between local CSV or Google Sheets
  • 🎯 Goal Tracking: Track status, progress, and completion
  • Duration Tracking: Monitor expected vs actual completion time
  • 📝 Notes & Updates: Add context and track progress
  • 🔑 Secure Credentials: All sensitive keys stored in system keyring

Installation

Quick Install

pip install priv-goals
priv-goals --setup

Requirements

  • Python 3.8 or higher
  • An API key for your preferred LLM provider (OpenAI, Anthropic, etc.)
  • For Google Sheets storage: Google Cloud service account credentials
  • System keyring (usually pre-installed on most operating systems)

Detailed Installation Steps

  1. Create a virtual environment (recommended):

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  2. Install from PyPI:

    pip install priv-goals
    
  3. Run the setup wizard:

    priv-goals --setup
    

    The setup wizard will guide you through:

    • Choosing your LLM provider (OpenAI, Anthropic, Ollama, or custom)
    • Securely storing your API key in the system keyring
    • Selecting and configuring your model preferences
    • Choosing your storage backend (local CSV or Google Sheets)
    • Setting up any additional required credentials
  4. Start the application:

    priv-goals
    

Configuration

Configuration is stored in ~/.priv-goals/config.yml. Sensitive credentials like API keys and service account details are stored securely in your system's keyring.

Example configuration:

provider: openai
api_key: $KEYRING_OPENAI_API_KEY
api_base: https://api.openai.com/v1
model: gpt-4
storage_type: csv

Storage Options

Local CSV (Default)

  • Data stored in ~/.priv-goals/goals.csv
  • Complete privacy, no external services required
  • Suitable for personal use

Google Sheets

  • Requires Google Cloud service account credentials
  • Great for team collaboration
  • Accessible from multiple devices
  • To set up:
    1. Create a Google Cloud project
    2. Enable Google Sheets API
    3. Create a service account and download credentials
    4. Run priv-goals --setup and select Google Sheets storage
    5. Your credentials will be securely stored in the system keyring

Usage

  1. Start the application:

    priv-goals
    
  2. Access the web interface: Open your browser and navigate to http://localhost:7860

  3. Interact naturally:

    • "Add a new goal to read a book by next month"
    • "Show me my current goals"
    • "Mark the reading goal as complete"
    • "Add a note to my exercise goal"

Command Line Reference

Help Message

usage: priv-goals [-h] [--setup] [--port PORT] [--config CONFIG] [--debug]
                  [--log-dir LOG_DIR] [--version]

Privacy-focused goal tracking application with AI assistance.

options:
  -h, --help           show this help message and exit
  --setup              Run the interactive setup wizard
  --port PORT          Port to run the web interface on (default: 7860)
  --config CONFIG      Path to configuration file (default: ~/.priv-goals/config.yml)
  --debug              Enable debug mode with additional logging
  --log-dir LOG_DIR    Directory for log files (default: ~/.priv-goals/logs)
  --version           Show program's version number and exit

Examples:
  priv-goals                 # Start the application
  priv-goals --setup         # Run the setup wizard
  priv-goals --port 8080     # Start on specific port
  priv-goals --config ~/my-config.yml  # Use custom config file

Common Commands

  1. View help:

    priv-goals --help
    
  2. Run setup wizard:

    priv-goals --setup
    
  3. Start on custom port:

    priv-goals --port 8080
    
  4. Enable debug logging:

    priv-goals --debug
    
  5. Use custom config file:

    priv-goals --config ~/custom-config.yml
    
  6. Check version:

    priv-goals --version
    

Security Notes

  • All sensitive credentials (API keys, service account details) are stored in your system's secure keyring
  • No credentials are stored in plain text
  • Temporary credential files are automatically cleaned up
  • Local CSV files are stored in your home directory
  • Google Sheets credentials are only used when needed and stored securely

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Roadmap

1️⃣ Goal Management Enhancements

  • Delete/remove goals from the tracker.
  • Rename goals for better organization.
  • Revert a completed goal back to "in progress."
  • Allow users to enter a duplicate goal (e.g., "read a book") if a similar goal was previously completed.
  • Allow the user to "un-delete" a goal that was removed by mistake. (Partially working thanks to assistant's memory.)
  • Allow multiple lists (e.g., short-term, long-term, personal, work, etc.) for better organization.
  • Implement a "priority" column for goals, so users can prioritize their tasks.

2️⃣ Time Tracking & Scheduling

  • Track timestamps: When a goal is created, when it is completed, and how long it took.
  • Calculate and display average completion time for goals.
  • Add an "Expected Duration" column, which can be optional or open-ended (e.g., "some time next week").
  • Prompt the user for an expected duration when adding a goal if they don’t specify one (but allow them to decline).

3️⃣ AI & Usability Improvements

  • Handle edge cases (e.g., a goal named "complete" should not confuse the system).
  • Implement semantic goal identification, so similar goals (e.g., "read a book" vs. "read any book") are recognized as the same.
  • Make notes about the current status of a goal, which the AI can process and provide feedback on.
  • Implement local storage for goals, so the user can access their goals privately offline.
  • Implement alternate LLMs (e.g., local models) for more flexibility.
    • Implement alternate LLMs using liteLLM - works for proprietary models, e.g., Claude.
    • Implement local LLMs.
  • Test the app's ability to edit and update goals (e.g., changing name of a goal).
  • Allow user to modify spreadsheet schema (e.g., add new columns for additional information).

4️⃣ User Experience & UI

  • Create a persistent view of the goal list, instead of requiring the user to ask to view it each time.
  • Improve the logic for refreshing the goal list after a new goal is added or an existing goal is updated.
  • Display an initial welcome message from the AI, describing the available functionality of the app.
  • Implement LLM-switching functionality to allow users to switch between different models.

5️⃣ Debugging & Logging

  • Create a logging system to record every conversation during development for debugging purposes.

6️⃣ Codebase & Documentation

7️⃣ Security & Privacy

  • Implement authentication (optional) for local CSV storage.

8️⃣ CLI

  • Add command to print configuration to the CLI.

License

This project is licensed under the GNU Affero General Public License (AGPLv3).


Contributing

Contributions are welcome! Please fork the repository and submit a pull request for review.

Project details


Download files

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

Source Distribution

priv_goals-0.0.5.tar.gz (50.3 kB view details)

Uploaded Source

Built Distribution

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

priv_goals-0.0.5-py3-none-any.whl (53.7 kB view details)

Uploaded Python 3

File details

Details for the file priv_goals-0.0.5.tar.gz.

File metadata

  • Download URL: priv_goals-0.0.5.tar.gz
  • Upload date:
  • Size: 50.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for priv_goals-0.0.5.tar.gz
Algorithm Hash digest
SHA256 3bdc7bce8f3ed32eab51150cc29d05c116f709902e3ee3e694dba507ee28f46c
MD5 a3f4bc6bec48f1333fdde078ca28a773
BLAKE2b-256 3fe2defda9f50212079d8c4c422805d7112ebc240724edc0e2ae2c22f5c680a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for priv_goals-0.0.5.tar.gz:

Publisher: publish.yml on hesreallyhim/priv-goals

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file priv_goals-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: priv_goals-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 53.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for priv_goals-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 79c7fe036e3cf8e1bc5d2608249f2c841a522d49cf210ac2e02f46883c378701
MD5 2cb388a77da9cbb92b44662b9fd77201
BLAKE2b-256 37cb1062199c08693b20b293ece01a84bbd425941500eef79da7723d24e19920

See more details on using hashes here.

Provenance

The following attestation bundles were made for priv_goals-0.0.5-py3-none-any.whl:

Publisher: publish.yml on hesreallyhim/priv-goals

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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