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.
- 🔒 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
pip install priv-goals
priv-goals --setup
- 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)
-
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 --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
-
Start the application:
priv-goals
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
- Data stored in
~/.priv-goals/goals.csv
- Complete privacy, no external services required
- Suitable for personal use
- 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 --setup
and select Google Sheets storage - Your credentials will be securely stored in the system keyring
-
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"
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
-
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
- 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
Contributions are welcome! Please feel free to submit a Pull Request.
- 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.
- 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).
- 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).
- 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.
- Create a logging system to record every conversation during development for debugging purposes.
- Implement authentication (optional) for local CSV storage.
- Add command to print configuration to the CLI.
This project is licensed under the GNU Affero General Public License (AGPLv3).
Contributions are welcome! Please fork the repository and submit a pull request for review.