Community Discussion · Company Watch

Self-hosted AI calendar Horolog helps reclaim time between meetings

Dao Shi Shuo DuiDao Shi Shuo DuiAug 102026/08/10 256 views

My lab junior recommended Horolog to me, saying it's an open-source alternative to Reclaim.ai that automatically slots focus time, habits, and tasks into the gaps between real meetings. I hate schedules packed with meetings where actual work time has to be fought for, so I spent an afternoon getting it up and running. Documenting the whole process from scratch.

First, what this tool does. Horolog is a self-hosted AI calendar. You feed it your schedule, and it automatically finds free time slots and arranges your tasks there. Reclaim.ai is the commercial version, supporting only Google Calendar; Horolog is open-source, keeps data in your hands, and you deploy and use it yourself.

Preparation: Install Docker

Horolog officially recommends deploying via Docker. Basically, Docker is a box for installing software; it packages the environment so you don't need to install a bunch of dependencies locally. Go to docker.com to download Docker Desktop (installers available for Windows and Mac). Once installed and opened, if the whale icon in the bottom right turns green, it's running.

Getting Started: Pull Image, Edit Config, Launch

1. Open the terminal (PowerShell on Windows, Terminal on Mac) and enter git clone https://github.com/ujjwalredd/horolog.git to pull the source code locally.

2. Enter the directory cd horolog. You'll see a .env.example file, which is the config template. Copy it to .env: cp .env.example .env.

3. Open .env with Notepad. Here you need to fill in the API keys for Google Calendar. Go to console.cloud.google.com, create a project, enable the Google Calendar API, create an OAuth 2.0 Client ID, and fill in the client ID and client secret. This step is where people get stuck most often, so I'll add more details:

  • When creating credentials, select "Web application" for "Application type"
  • For "Authorized redirect URIs," enter http://localhost:3000/api/auth/callback; the port number must match the one you start later
  • After creation, copy the Client ID and Secret into .env after GOOGLE_CLIENT_ID= and GOOGLE_CLIENT_SECRET= respectively

4. Start it: docker compose up -d. The first time takes about two or three minutes to pull the image. Success is indicated when the terminal shows Started.

5. Open http://localhost:3000 in your browser. If you see the login page, the service is up. Click "Sign in with Google," authorize your calendar, and you'll see the Horolog main interface.

Pitfalls

I hit three pitfalls that beginners almost always encounter.

First, the redirect URI in the .env file didn't match the configuration in the Google backend. I initially entered http://localhost:3000, missing /api/auth/callback, causing a redirect_uri_mismatch error during login. Just ensure both sides are exactly identical.

Second, the Docker container wouldn't start, and logs showed the port was occupied. docker compose logs reveals specific errors. On my end, port 3000 was taken by another monitoring system in the lab. I changed PORT=3001 in .env, restarted with docker compose up -d, and accessed http://localhost:3001.

Third, after authorizing the calendar, I couldn't see my meetings. Check CALENDAR_ID in .env; the default is primary, corresponding to your main calendar. If you have multiple calendars, you need to fill in the specific calendar ID, which can be found in Google Calendar settings.

Configuring Tasks and Habits

After logging in, categories are on the left side of the interface.

  • Click "Tasks" to add tasks: input description, estimated duration, deadline
  • Click "Habits" to add habits, e.g., "Run 3 times a week, 30 minutes each"
  • Click "Focus Time" to set focus periods, e.g., "2 hours of deep work daily"

Horolog automatically scans your upcoming week's meetings and slots tasks and habits into the gaps. In my testing, it's quite smart, prioritizing focus blocks during non-meeting times and avoiding scheduling tasks late at night.

A point worth mentioning

Reclaim.ai only supports Google Calendar. Horolog currently primarily integrates with Google too, but since it's self-hosted, theoretically other calendar sources can be added. A few people in my lab share one server, each running their own instance without interfering with each other's data—more flexible than the commercial version.

By the way, Clockwise shut down at the end of March this year, migrating users to Reclaim.ai. So now, if you want an AI calendar, either pay for Reclaim or self-host Horolog. I chose the latter to save subscription fees and keep data in my own hands.

Use it for a week after installation, throwing daily tasks in to see if the arrangement is reasonable. I've run it for three days; the rhythm is mostly reliable, occasionally missing task scheduling, which fixes itself with a refresh.

Next steps might include connecting Horolog to a vector database, converting task descriptions into embeddings for semantic search to find historical scheduling patterns. I recently tried DynamoDB's native vector search and will write a separate post about it later.


📌 This article is compiled from Hacker News. Original: https://github.com/ujjwalredd/horolog

Copyright belongs to the original authors. This is a compilation and independent analysis based on public reports.

2 replies

?
Ctrl + Enter to reply
Zhu Yunfan

Seeing 'you have to fight for proper work time' made me break down instantly... All week long it's just meetings, and all the actual coding happens at night and on weekends. But self-hosting does sound appealing—keeping data in your own hands. Recently started using WorkBuddy and got the same feeling; local processing feels way more secure than cloud.

Ming
MingAug 10

Hey, this looks kinda interesting, but can it connect with n8n? I've been building automated workflows lately, and it'd be awesome if I could just hook it up via API and stuff it into my calendar... Right now I'm still manually scheduling tasks, which is annoying as hell.