Cron command plugin for Takopi.
Project description
takopi-cron
cron command plugin for takopi. run a prompt on an interval and post results back into your chat.
This is intentionally simple:
- It runs in-process inside Takopi (so Takopi must be running).
- It does not survive restarts (you re-run
/cron startafter restart).
requirements
uv for installation (curl -LsSf https://astral.sh/uv/install.sh | sh)
python 3.14+ (uv python install 3.14)
takopi installed
install
recommended (installs the plugin into takopi's uv tool environment):
uv tool install -U takopi --with takopi-cron
if you installed takopi via pip (or you're running takopi from a project venv), install the plugin into the same environment:
pip install -U takopi-cron
enable it:
[plugins]
enabled = ["takopi-cron"]
usage
Start a job (runs once immediately, then repeats):
/cron start 6 Write a summary of today's PRs and what I should review next.
Stop the job for the current chat/thread:
/cron stop
Status:
/cron status
List all running cron jobs:
/cron list
Run once (no scheduling):
/cron run What changed since yesterday?
Seed presets (configured in takopi.toml):
/cron seed list
/cron seed start daily_summary
/cron start seed
Seed presets start in the chat/thread where you run the command. /cron start seed
starts every seed preset at once in that chat/thread.
If you start multiple seed jobs in one chat/thread, /cron stop stops all of them
for that chat/thread.
Tips:
- Put an engine directive at the start of the prompt, e.g.
/claude ... - Put a project directive at the start of the prompt, e.g.
/myproj ... - Put a branch directive at the start of the prompt, e.g.
@feat/foo ...
breaking changes
Breaking changes in 0.1.0:
plugins.cron.seed[].promptwas removedplugins.cron.seed[].prompt_fileis now requiredprompt_fileis resolved relative to the directory containingtakopi.toml/cron stopnow stops all cron jobs running in the current chat/thread, not just one/cron start seednow starts every configured seed preset in the current chat/thread
Migration example:
Before:
[[plugins.cron.seed]]
id = "daily_summary"
every_hours = 6
prompt = "/codex summarize what changed since the last cron tick"
After:
[[plugins.cron.seed]]
id = "daily_summary"
every_hours = 6
prompt_file = "cron-prompts/daily_summary.prompt.md"
config
In ~/.takopi/takopi.toml:
[plugins.cron]
# Optional: restrict who can control cron jobs
allowed_user_ids = [12345678]
# Optional: whether cron ticks should notify (default: true)
notify = true
# Optional: seed presets. prompts live in separate files so takopi.toml stays
# smaller, but the schedule metadata stays here.
[[plugins.cron.seed]]
id = "daily_summary"
every_hours = 6
prompt_file = "cron-prompts/daily_summary.prompt.md"
# notify = true # optional override
# enabled = false # optional
prompt_file is resolved relative to the directory containing takopi.toml, so
this layout works:
~/.takopi/
takopi.toml
cron-prompts/
daily_summary.prompt.md
~/.takopi/cron-prompts/daily_summary.prompt.md
/codex summarize what changed since the last cron tick
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 takopi_cron-0.1.0.tar.gz.
File metadata
- Download URL: takopi_cron-0.1.0.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a80e41cce88b9e76de768ce51560e53ff7e499253777fb3eec2e92ca1317e09b
|
|
| MD5 |
22cba02e0298c870283edeb83258f21e
|
|
| BLAKE2b-256 |
f9f696a07b162600325f4cd770befdd734cbb126821a7c077cd59c57077c9aa8
|
Provenance
The following attestation bundles were made for takopi_cron-0.1.0.tar.gz:
Publisher:
workflow.yml on richardliang/takopi-cron
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
takopi_cron-0.1.0.tar.gz -
Subject digest:
a80e41cce88b9e76de768ce51560e53ff7e499253777fb3eec2e92ca1317e09b - Sigstore transparency entry: 1154820742
- Sigstore integration time:
-
Permalink:
richardliang/takopi-cron@e01a7800ab866eacc6fd610022152ab36e19ee41 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/richardliang
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@e01a7800ab866eacc6fd610022152ab36e19ee41 -
Trigger Event:
push
-
Statement type:
File details
Details for the file takopi_cron-0.1.0-py3-none-any.whl.
File metadata
- Download URL: takopi_cron-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d21297028d9cbdd29b5455d0477e543119d46bce990893bc1fcdc9f75db2dc3
|
|
| MD5 |
b599e65182f27e9ce96471b99c0f471d
|
|
| BLAKE2b-256 |
0b892acbdb8e142bdccba99cad8ecca0b3acd66bca3fb18baddd5baf336b013c
|
Provenance
The following attestation bundles were made for takopi_cron-0.1.0-py3-none-any.whl:
Publisher:
workflow.yml on richardliang/takopi-cron
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
takopi_cron-0.1.0-py3-none-any.whl -
Subject digest:
8d21297028d9cbdd29b5455d0477e543119d46bce990893bc1fcdc9f75db2dc3 - Sigstore transparency entry: 1154820744
- Sigstore integration time:
-
Permalink:
richardliang/takopi-cron@e01a7800ab866eacc6fd610022152ab36e19ee41 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/richardliang
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@e01a7800ab866eacc6fd610022152ab36e19ee41 -
Trigger Event:
push
-
Statement type: