A calendar and task manager built for working with AI agents.
- Projects organise everything. A project is both a list of items and a calendar colour, so the calendar shows where your time goes.
- One timeline. Events and the time blocks of your items share the same calendar: day, week, month and year.
- Agents propose, you decide. An agent reads and writes through the command line, but its scheduling suggestions appear as tentative entries that take effect only when you accept them. Deletes by an agent wait for your consent.
- Every change is traceable. The activity log records who changed what and why, and each change can be undone.
- A pomodoro timer that knows your items. Focus on an item one tomato at a time; the time actually spent shows next to its estimate, and statistics show where the week went.
- Important and urgent. Mark what is important; urgency follows from the deadline. A four-quadrant list sorts everything open.
- Works with the calendar apps you already use through CalDAV: iPhone, Mac, Android with DAVx⁵, Thunderbird.
- One binary. A Go server with the web app, SQLite and the time zone database inside. No other services to run.
The interface is in Chinese for now.
curl -fsSL https://raw.githubusercontent.com/Lewin671/keduly/main/install.sh | shThis downloads the keduly binary for macOS or Linux from the
latest release, verifies its checksum and
puts it in ~/.local/bin. The one binary is both the server and the command line. The variables
at the top of install.sh choose another version or directory.
To upgrade, run keduly update: it replaces the binary with the latest release the same way,
checksum included. keduly update --check only compares versions, and --version v0.2.0 installs
a given release.
To build from source instead you need Go 1.25 or later, and Node with pnpm for the web app:
scripts/build.sh writes bin/keduly.
keduly serve --addr 127.0.0.1:8080 --data ./dataOpen http://127.0.0.1:8080 and create an account. docs/deploy.md covers running it on a server behind HTTPS, the container image, configuration and backups.
Create a token in Settings → AI 凭证, then on the machine where the agent runs:
keduly login --server https://keduly.example.com # paste the token when asked
keduly agenda # what is on today
keduly free --date tomorrow --duration 60m # find a gap
keduly item add "Prepare the demo" --project "Client" --estimate 1h --due wednesday --important
keduly suggest schedule <item-id> --start "14:00" --duration 1h --reason "First free hour before the deadline"
keduly undoEvery command takes --json; every command that changes something takes --dry-run and
--reason. keduly help lists them all.
skills/keduly/SKILL.md teaches an agent when and how to use the CLI. The binary carries the skill that matches it, and you choose where it goes:
keduly skill install # ~/.agents/skills, the directory most agents read
keduly skill install --claude # ~/.claude/skills, for Claude Code, which reads only its own
keduly skill install --project # add to either: the current project instead of your home
keduly skill install --dir DIR # any other skills directoryRun it again, with the same flags, after keduly update.
Create an app password in Settings → 系统日历 and add a CalDAV account in your calendar app with the server address shown there, your email and that password. Each project appears as a calendar.
ios/ and android/ hold native apps for the same server and account: items, calendar and the
focus timer. They are not in the app stores yet. For Android, download keduly-android-v….apk
from the latest release; the app then
offers newer releases itself, under Settings. For iOS, build from source. Sign in with the server
address, your email and your password.
scripts/check-ios.sh # needs Xcode and XcodeGen; then open ios/Keduly.xcodeproj
scripts/check-android.sh # needs JDK 17 and the Android SDK; the APK is under android/app/build/outputs/apk/debug/| Document | Contents |
|---|---|
| docs/design/DESIGN.md | What the product is and why it looks the way it does |
| docs/design/mockup.html | The clickable design mockup |
| docs/design/mobile.html | The design of the phone apps |
| docs/api.md | The HTTP API and the CalDAV mapping |
| docs/deploy.md | Self-hosting |
| AGENTS.md | Layout, rules and commands for contributors, human or not |
go run ./cmd/keduly serve --data ./data --addr 127.0.0.1:8080 # server
cd web && pnpm install && pnpm dev # web app with hot reload
scripts/check.sh # formatting, vet, all tests
scripts/seed-demo.py http://127.0.0.1:8080 # demo data; needs --registration openEarly. The server, web app, CLI and CalDAV endpoint work end to end and are covered by tests, but CalDAV has so far been exercised with a client library rather than with every calendar app, and the phone layout is basic.
On iOS or Android, enter your server address and choose 授权登录. Open or share the approval link with a browser where you are already signed in, and enter the four-digit pin shown on the phone. The phone signs in automatically after approval. Requests expire after two minutes; cancelling stops the phone's claim loop, and retry creates a new request. The approval link contains neither the pin nor the secret that claims the session.