Skip to main content

The Engine of Time

Defend your deep work.

Horolog is a premier, self-hosted AI calendar engine. It treats tasks, habits, and focus time as fluid primitives — weaving them beautifully around your hard commitments.

AGPL-3.0 licensed · self-hosted · zero telemetry

Calm nature landscape representing peace of mind
Google Calendar
Outlook / Exchange
Apple Calendar
iCalendar
CalDAV
Linear
Todoist
GitHub
Notion
ClickUp
Jira
Zoom
Google Calendar
Outlook / Exchange
Apple Calendar
iCalendar
CalDAV
Linear
Todoist
GitHub
Notion
ClickUp
Jira
Zoom
Google Calendar
Outlook / Exchange
Apple Calendar
iCalendar
CalDAV
Linear
Todoist
GitHub
Notion
ClickUp
Jira
Zoom
Google Calendar
Outlook / Exchange
Apple Calendar
iCalendar
CalDAV
Linear
Todoist
GitHub
Notion
ClickUp
Jira
Zoom

Intelligence without compromise.

Experience the ease of AI scheduling without sacrificing the exactness of mathematical constraints.

1. Natural Intent

Type your raw intent exactly as you think it: 'I need to review the Q3 roadmap for 2 hours sometime before Friday'.

2. Edge Parsing

Your local LLM safely translates the sentence into a rigid JSON constraint schema without ever seeing your calendar.

3. Precision Placement

The deterministic Python engine calculates the optimal slot within milliseconds, safely buffering around existing locks.

The real thing

Not a mockup.

Real captures, from npm run seed:demo's sample week.

Planner

Month, week, day or list. Priority by accent weight, kind by glyph, movability by rule style. Live over SSE.

Task inbox

Every intent and where it actually landed. Anything that did not fit is called out, not hidden.

Habits & Focus Time

Routines and weekly focus goals in the units people speak: ‘3× a week, an hour each, between 10 and 4’.

Meetings

A Smart Meeting only lands where every attendee's busy time allows, without ever blocking your own solo work.

Analytics

Stat tiles plus a per-day load chart. Palette validated for colour-vision deficiency, not eyeballed.

Calendars

Connect Google or Outlook, an ICS feed, or a CalDAV server; export your plan as a subscribable feed.

Time

A live ‘today’ view: what's happening right now, what's next, and a moving now-line on the day's timeline.

The full roster

Eight agents. One engine underneath.

Every one of these is the same scheduling primitive wearing a different hat — a task, a habit and a meeting are all just demands for time with different rules. Nothing here is a separate subsystem that can drift out of sync with the rest.

Escapement
solver/greedy.py

Smart Task Scheduler

Deadline-aware tasks, split across sittings and placed around real meetings. Priority P1-P4 decides who wins a contested slot.

Regulator
solver/expand.py

Habit & Routine Manager

‘Gym three times a week between 10 and 4.’ Recurrence, time-of-day windows, per-day caps, automatic relocation.

Mainspring
providers.py

Dynamic Calendar Sync

ICS feeds, CalDAV servers, and real OAuth connections to Google Calendar and Outlook — recurring events expanded, free time ignored.

Complication
solver/greedy.py

Smart Meetings

Multi-attendee scheduling that intersects everyone's availability — without letting a colleague's calendar block your own solo work.

Chronograph
analytics.py

Productivity Analytics

Deep-work hours, meeting load, fragmentation, longest free run per day, after-hours load, unmet demand — all measured, not guessed.

Power Reserve
solver/greedy.py

Decompression Buffers

Recovery time held after every substantial meeting, from any source. A run of back-to-back meetings gets one buffer, at the end.

Gnomon
api.py

Booking Links

A public /book/name page offering true free time — hours holding flexible work stay bookable, because taking the slot moves it.

Tourbillon
integrations/

Tracker Integrations

Linear, Todoist and GitHub issues pulled in as fluid tasks — via OAuth or a pasted personal key, scheduled around everything else.

Engineered for absolute control.

Horolog is not a black box. It separates natural language processing from the actual calendar mathematics, ensuring deterministic constraint solving without LLM hallucinations.

Schema-Constrained LLM Layer

When you input an intent, it is routed through an LLM layer (OpenAI, Anthropic, or your local Ollama) using strict structured outputs. The model never touches your calendar; it only emits a JSON schema defining the priority, boundaries, and duration of the task.

HOROLOG_LLM_PROVIDER=ollama
HOROLOG_LLM_MODEL=llama3:8b
HOROLOG_LLM_BASE_URL=http://localhost:11434

Deterministic Constraint Solver

The structured intent is passed to a high-performance, deterministic Python constraint solver running on FastAPI. It calculates the exact free slots across connected integrations, respecting pre-existing locks, meeting buffers, and user-defined constraints.

  • Millisecond resolution time
  • Complete avoidance of LLM hallucination
  • Mathematical guarantee of non-overlapping bounds

One primitive. Infinite possibilities.

Traditional calendars isolate your tasks, habits, and meetings into rigid silos. Everything on your schedule competes for time honestly, orchestrated by an intelligent solver.

Cognitive Scheduling

Tell the engine 'deep work for 4 hours this week'. It carves the optimal slots around your existing commitments and adapts dynamically.

Local-First
Execution

Point it at Claude, OpenAI, or a local Llama instance. Complete privacy, absolute control. Zero cloud egress.

Smart Booking Links

Public booking links (`/book/[username]`) that dynamically protect your deep focus time.

Real Calendar Write-Back

Push scheduled blocks onto a dedicated calendar on Google or Outlook as real events — colleagues see them, and can't double-book over them.

Third-Party Task Sync

Sync Linear, Todoist & GitHub issues directly into Horolog. They automatically schedule as fluid tasks around your real-life calendar.

Frequently asked questions.

Do I need an OpenAI API key?

No. While Horolog supports OpenAI and Anthropic, it is built to run flawlessly with local LLMs like Llama 3 via Ollama. You can run the entire stack fully air-gapped on your own hardware.

Does the LLM have access to my calendar data?

Never. The LLM acts purely as a linguistic parser to generate a JSON schema of your intent (e.g. 'Gym for 1 hour'). The deterministic Python engine handles the actual schedule constraints and calendar data entirely separately.

How do I sync it with my work calendar?

Horolog supports CalDAV and direct ICS feeds. You can connect your Google Workspace, Microsoft Exchange, or Apple Calendar locally without exposing credentials to a third-party cloud.

Is this production ready for teams?

Horolog is designed as a single-player engine by default to guarantee absolute privacy. However, you can deploy it behind an SSO proxy (like Authelia or Tailscale) to share the instance securely across your organization.

Reclaim your sovereignty.

Download the engine. Run it on your hardware. Stop renting your calendar.