Add your description here
Project description
obstask
obstask is a CLI and AI-powered assistant for managing an Obsidian vault. Create and link projects, tasks, people, and meetings from the terminal or via a conversational agent, and turn daily notes into structured tasks and meetings.
Features
- Vault scaffolding — Initialize a vault with
projects/,tasks/,people/,meetings/,daily/, and templates. - Note creation — Add projects, people, meetings, and tasks with YAML frontmatter and Obsidian wikilinks.
- Daily notes — Projects are linked into daily notes; new meetings are appended to today’s daily under the right project.
- AI agent — Chat with an agent (Gemini) to create people, meetings, and tasks in the current project context.
- Parse daily — Process today’s daily note so the agent can create tasks and meetings from your notes.
Requirements
- Python 3.12+
- For chat and parse: set
GOOGLE_API_KEYandGOOGLE_MODELin your environment (e.g.gemini-2.0-flash).
Installation
From the project root:
uv sync
Or install in editable mode:
pip install -e .
The CLI is available as ot (or run python -m obstask.cli).
Usage
Run all commands from the root of your Obsidian vault (the folder that contains or will contain projects/, tasks/, etc.).
| Command | Description |
|---|---|
ot init |
Create directory structure and copy templates. |
ot project |
Create a new project (interactive). |
ot person |
Create a person and link to projects. |
ot meeting |
Create a meeting (project + attendees). |
ot task |
Create a task (project, due date, status). |
ot chat |
Run the AI agent for the selected project. |
ot parse |
Parse today’s daily note and run the agent. |
Examples
cd /path/to/your/vault
ot init
ot project
ot task
ot chat
Task due dates in the CLI accept YYYY-MM-DD, MMDD, or DD (current month). Task status is one of: backlog, to do, doing, done.
Vault layout
After ot init, the vault looks like:
vault/
├── projects/ # Project notes
├── tasks/ # Task notes (project_fk, due_date, status_enum)
├── people/ # People (project_list)
├── meetings/ # Meetings (project_fk, people_list, meeting_date)
├── daily/ # Daily notes (e.g. 2026-03-19.md)
└── templates/ # Daily.md, Meeting.md, People.md, Project.md, Task.md
Notes use YAML frontmatter and markdown body; links between notes use Obsidian wikilinks (e.g. [[projects/My Project|My Project]]).
Agent (chat / parse)
ot chat— Choose a project, then talk to the agent. It can create people, meetings, and tasks in that project using tools; use exact person note filenames for meeting attendees so wikilinks resolve.ot parse— Loads today’s daily note, filters uncompleted entries, and runs the agent so you can turn notes into tasks and meetings.
Set before using:
export GOOGLE_API_KEY="your-key"
export GOOGLE_MODEL="gemini-2.0-flash"
Development
- Dependencies: Pydantic, pydantic-ai, PyYAML, questionary, rich.
- Entry point:
ot→obstask.cli:cli.
License
MIT.
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
File details
Details for the file obstask-0.1.0.tar.gz.
File metadata
- Download URL: obstask-0.1.0.tar.gz
- Upload date:
- Size: 149.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8db3f3d11efe0e0e43040b63ac2dc6bff6b89e2a731bbabe8d081b9f1181776
|
|
| MD5 |
8626828b6fa571461fadd03cb6a802a2
|
|
| BLAKE2b-256 |
8ce03c9293003766cda21baac71200f99cead89c1446975f3c6a9fefe8ead283
|