Schedule any job for anyone anywhere — in one line.
Project description
schedline
Schedule any job for anyone anywhere — in one line.
A zero-dependency scheduling engine with a terse one-line grammar, an auto-registering store, three-lens conflict detection, and a read-only terminal viewer. Type a thought, it becomes a scheduled job.
$ schedline add 'kani: dropoff Tue,Thu 10:45-11:15 @kindergarten #care'
added: [1] kani: dropoff Tue,Thu 10:45-11:15 @kindergarten #care /personal
$ schedline add 'david: "AWS Arch" Mon 13:40-15:50 @room-204 #uni'
$ schedline add 'david: dentist Mon 14:30-15:30 @clinic #health'
added: [3] david: dentist Mon 14:30-15:30 @clinic #health /personal
⚠ double-booked: [2] david: AWS Arch Mon 13:40-15:50 @room-204 #uni /personal
Install
pip install schedline
The grammar
<who>: <what> <when> [@where] [#tag ...] [/namespace]
| Part | Meaning | Examples |
|---|---|---|
who |
assignee id (auto-registers) | kani |
what |
free text; quote if multi-word | "AWS Arch" |
when |
day-spec and/or time range | Tue,Thu · Mon-Fri · 2026-06-20 · today · tomorrow · 13:40-15:50 |
@where |
location (auto-registers) | @kindergarten |
#tag |
zero or more tags | #care #uni |
/namespace |
bucket (default personal) |
/business |
People, places, and tags auto-register on first use — there is no schema to edit before scheduling a new person or place.
Commands
schedline add "<line>" parse a shorthand line and store it (warns on clashes)
schedline ls [filters] list jobs --ns --who --where --tag --day
schedline agenda [--day D] day-by-day, conflict-flagged
schedline rm <id> delete by id
schedline who | where list known assignees / locations
schedline view read-only curses viewer (calendar / swimlanes / dashboard)
sched is installed as a short alias for schedline.
Conflict detection
Every add checks three lenses (advisory — it warns, never blocks):
- Person double-booked — same assignee, overlapping time.
- Location occupied — same
@place, overlapping time, different people. - Travel gap — same person, back-to-back jobs at different places with less
than
SCHEDLINE_TRAVEL_BUFFERminutes between them (default 30).
Store location
Jobs live in a single JSON file, resolved in this order:
--store <path>$SCHEDLINE_STORE$XDG_DATA_HOME/schedline/jobs.json(default~/.local/share/schedline/jobs.json)
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
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 schedline-0.1.0.tar.gz.
File metadata
- Download URL: schedline-0.1.0.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dea4b715e3d50ffac6d6f3d5ac6a5983e0080b9751f0c8a1f3f6dc2140beb362
|
|
| MD5 |
3e92234cba1f4081c06a342590fd044a
|
|
| BLAKE2b-256 |
8a824e3d8b0ea80e65a98fc0c9caa820e6e87f1e8018cd431fb15fc31b264274
|
Provenance
The following attestation bundles were made for schedline-0.1.0.tar.gz:
Publisher:
release.yml on DavidTbilisi/schedline
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
schedline-0.1.0.tar.gz -
Subject digest:
dea4b715e3d50ffac6d6f3d5ac6a5983e0080b9751f0c8a1f3f6dc2140beb362 - Sigstore transparency entry: 1837046544
- Sigstore integration time:
-
Permalink:
DavidTbilisi/schedline@05c032eb67f5febf577709679fba53b0198749ae -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/DavidTbilisi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@05c032eb67f5febf577709679fba53b0198749ae -
Trigger Event:
push
-
Statement type:
File details
Details for the file schedline-0.1.0-py3-none-any.whl.
File metadata
- Download URL: schedline-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f00de8ca9b6b5d8f35e90dad86f4344b83a307de100474c0392f680beab3600
|
|
| MD5 |
3e6a28162687103268fe31ea366c65da
|
|
| BLAKE2b-256 |
ca9483c8322e2ed5b6f27aed3d1db2908d4a7fafc94fc583581843dfd1b9afff
|
Provenance
The following attestation bundles were made for schedline-0.1.0-py3-none-any.whl:
Publisher:
release.yml on DavidTbilisi/schedline
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
schedline-0.1.0-py3-none-any.whl -
Subject digest:
0f00de8ca9b6b5d8f35e90dad86f4344b83a307de100474c0392f680beab3600 - Sigstore transparency entry: 1837046659
- Sigstore integration time:
-
Permalink:
DavidTbilisi/schedline@05c032eb67f5febf577709679fba53b0198749ae -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/DavidTbilisi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@05c032eb67f5febf577709679fba53b0198749ae -
Trigger Event:
push
-
Statement type: