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
-
Create a virtual environment (recommended):
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install from PyPI:
pip install priv-goals
-
Run the setup wizard:
priv-goals --setupThe 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
-
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:
- Create a Google Cloud project
- Enable Google Sheets API
- Create a service account and download credentials
- Run
priv-goals --setupand select Google Sheets storage - Your credentials will be securely stored in the system keyring
Usage
-
Start the application:
priv-goals
-
Access the web interface: Open your browser and navigate to
http://localhost:7860 -
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
-
View help:
priv-goals --help -
Run setup wizard:
priv-goals --setup -
Start on custom port:
priv-goals --port 8080
-
Enable debug logging:
priv-goals --debug -
Use custom config file:
priv-goals --config ~/custom-config.yml
-
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.
- Implement alternate LLMs using
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3bdc7bce8f3ed32eab51150cc29d05c116f709902e3ee3e694dba507ee28f46c
|
|
| MD5 |
a3f4bc6bec48f1333fdde078ca28a773
|
|
| BLAKE2b-256 |
3fe2defda9f50212079d8c4c422805d7112ebc240724edc0e2ae2c22f5c680a6
|
Provenance
The following attestation bundles were made for priv_goals-0.0.5.tar.gz:
Publisher:
publish.yml on hesreallyhim/priv-goals
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
priv_goals-0.0.5.tar.gz -
Subject digest:
3bdc7bce8f3ed32eab51150cc29d05c116f709902e3ee3e694dba507ee28f46c - Sigstore transparency entry: 168832006
- Sigstore integration time:
-
Permalink:
hesreallyhim/priv-goals@d83895291037d791fc680e5e80b1375a43dacb8e -
Branch / Tag:
refs/tags/v0.0.5 - Owner: https://github.com/hesreallyhim
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d83895291037d791fc680e5e80b1375a43dacb8e -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79c7fe036e3cf8e1bc5d2608249f2c841a522d49cf210ac2e02f46883c378701
|
|
| MD5 |
2cb388a77da9cbb92b44662b9fd77201
|
|
| BLAKE2b-256 |
37cb1062199c08693b20b293ece01a84bbd425941500eef79da7723d24e19920
|
Provenance
The following attestation bundles were made for priv_goals-0.0.5-py3-none-any.whl:
Publisher:
publish.yml on hesreallyhim/priv-goals
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
priv_goals-0.0.5-py3-none-any.whl -
Subject digest:
79c7fe036e3cf8e1bc5d2608249f2c841a522d49cf210ac2e02f46883c378701 - Sigstore transparency entry: 168832009
- Sigstore integration time:
-
Permalink:
hesreallyhim/priv-goals@d83895291037d791fc680e5e80b1375a43dacb8e -
Branch / Tag:
refs/tags/v0.0.5 - Owner: https://github.com/hesreallyhim
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d83895291037d791fc680e5e80b1375a43dacb8e -
Trigger Event:
release
-
Statement type: