A note taking assistant that takes disjointed notes and organizes them into todos, actions, curiosities and observations.
If you are an experienced programmer, you may skip this step.
-
Open CLI (command line interface). My preferred way is by pressing Command + spacebar and typing "terminal" and pressing enter. This will open the terminal.
-
install the latest version of Homebrew. This is a package manager, you can think of it as the app store for your CLI. Install by pasting the following command into the terminal and pressing enter:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"- Use homebrew to install python. This is the programming language that this project runs on. Paste the following command into the terminal and press enter:
brew install python@3.11- Use homebrew to install pip. This is the package manager for python (last package manager I promise). Paste the following command into the terminal and press enter:
brew install pip- Use homebrew to install git. You likely already have it but just to be sure, paste the following command into the terminal and press enter:
brew install git- You're all caught up! proceed to the normal installation
- Clone the repository. This will create a local copy of the project on your computer. Paste the following command into the terminal and press enter:
git clone https://github.com/topper3418/planner.git- Navigate to the project directory. This will change your current working directory to the project directory. Paste the following command into the terminal and press enter:
cd planner- Create a virtual environment. This will create a isolated environment for the project so that it doesn't interfere with other projects. Paste the following command into the terminal and press enter:
python3 -m venv venv-
Acquire an XAI API token. This can be done at their console at https://console.x.ai/team/2134b8bb-7660-4c9b-949a-8a1e2c5cd6ad. Else, you can ask your son to text one to you.
-
If you are running windows, you'll have to google it or use Windows Subsystem for Linux. On mac/linux, add the following line to the end of the .bashrc file, replacing with the API key you acquired in the previous step:
export XAI_API_KEY=<api key>
If you are uncomfortable editing it in the command line, run the command (mac)
open .bashrc
then you can make the edits and save
-
Load the .bashrc file. This will load the virtual environment and load helpful aliases for running the project. You'll use this command each time you start a new session with the planner. Paste the following command into the terminal and press enter:
source .bashrc- Use the pip package manager to install the requirements. This will install all the packages needed for the project. Paste the following command into the terminal and press enter:
pip install -r requirements/prod.txtThat's it! You are now ready to use the project.
The application comes with a fully usable CLI interface. With your current working directory set to the project directory, initialize the virtual environment and load helpful aliases by pasting the following command into the terminal and pressing enter:
source .bashrcThen, you can run the following commands:
- Planner - root CLI, can use the
- nn - new note, creates a new note stamped with the current time
- notes - displays notes
- todos - displays todos
- observations - displays observations
- curiosities - displays curiosities
- cycle - cycles the engine, which processes the notes and creates the
derivative objects. use the flag -c to run the engine persistently
- serve - starts the REST API server, which allows you to create notes
and retrieve todos and actions
For each of these commands, you can use the --help flag to see more information
The application comes with a REST API, with allows for creating notes and retrieving most database objects. To run the server, you will need two terminal tabs with the .bashrc file sourced.
In one tab, run the following command:
cycle -cThis will run the engine in the background, and you can see the output of the LLM processing the notes. In your second tab, run the following command:
serveThe Sqlite3 Database is located in data/notes.db stores categories, notes, annotations, actions, todos and commands. The mapping to it is done via pydantic objects. The notes can be added via the cli, and the rest of the database manipulation can be done by acessing it with sqlite3
The engine is designed to run as a background process. From the CLI, it can be run a single time, untill there are no further notes to process
The main method for running the application is via the CLI. the .bashrc file contains the following commands:
The application comes with a REST API, which allows for creating notes and retrieving todos and actions. The API is built using Flask, and serves a web interface, just simple HTML, CSS and javascript.
"This project is licensed under CC BY-NC 4.0. You are free to use, modify, and share the code for non-commercial purposes, provided you give appropriate credit. Only the original author (Travis Opperud) may create and sell commercial versions of this software, such as iOS apps on the Apple App Store."
-
records notes
-
categorizes and annotates those notes using an LLM
-
uses those annotations to create todos, actions, and commands
-
uses the commands to modify notes, actions and todos
-
Rest API for creating notes and retrieving todos and actions
-
CLI for creating notes and retrieving todos and actions
-
use the LLM to create summaries of your day/week
- a single note spawns multiple annotations, allowing for more complex notetaking
-
you can retrieve notes from the REST API
-
UI that allows the user to see all the db objects at once. Could be web, could be local like tkinter
-
Provide the LLM with more context during annotation, this will vastly improve the quality of the annotations.
-
Todo dependency. Todos could/should have prerequisites, and then the prerequisites should be listed in the todos as a tree
-
Tags. the user should create tags which are implemented in the annotation step. Then they users can apply filters to each object type and summarize particular projects from one notebook
-
Add meta tasks for the system. Something along the lines of "schedule my day", and starts a dialogue where it proposes adjustments to the start and end times of todos, and you can converse back and forth to plan your day out