Philo is a local-first daily notes app for planning and execution.
It keeps your notes as markdown on disk, works with existing Obsidian vaults, carries unfinished work forward automatically, and lets you generate small tools inline when a note needs one.
- Keeps tomorrow, today, and recent notes in one continuous daily planning surface
- Carries unfinished tasks forward so work does not disappear between days
- Lets you chat with your notes, search across them, and prepare AI-assisted edits with dry-run diffs
- Generates disposable or reusable widgets directly inside a note
- Preserves markdown portability with support for images, wiki links, and Excalidraw embeds
- Works with app-managed storage or an existing Obsidian vault
Philo stores notes as plain markdown files on disk instead of locking them into a database. You can point it at your own journal folder or an Obsidian vault and keep your existing file layout.
The core workflow is simple: open today, see what carried over, write what matters, and keep moving. Philo keeps the planning surface short instead of sending you into a heavier project system.
Philo includes an in-app assistant named Sophia. It can answer questions against recent notes, cite what it used, and prepare note changes for review before anything is applied. Widget generation is also built in, so quick one-off tools can live right where the note needs them.
Generated widgets start disposable. When one proves useful, save it to the library and reuse it later in other notes.
⌘⇧Bbuild a widget from the current selection⌘Jopen note chat⌘Fsearch notes⌘Popen the widget library⌘,open settings
- Website: philo.johnjeong.com
- Releases: GitHub releases
Tauri v2, React 19, TypeScript, TipTap, Tailwind CSS v4, and Rust.
Philo's Settings -> Google Account flow uses Philo's bundled desktop OAuth client. End users only need to click Continue with Google in settings and complete consent in their browser.
If you are maintaining Philo's Google Cloud project, make sure:
- The Gmail API and Google Calendar API are enabled.
- The OAuth consent screen is configured in
Google Auth platform. - The bundled desktop OAuth client remains active on the project.
GOOGLE_OAUTH_CLIENT_SECRETis available in local build envs and GitHub Actions secrets if that client requires a secret during token exchange.
For local desktop development, put GOOGLE_OAUTH_CLIENT_SECRET=... in the repo root .env or export it in your shell before starting pnpm dev. If you want to override the bundled client ID locally, GOOGLE_OAUTH_CLIENT_ID=... is also accepted. The desktop Tauri launcher reads those values and passes them through to Rust and Vite before startup.
Philo currently requests:
openid,email, andprofilehttps://www.googleapis.com/auth/calendar.events.readonlyhttps://www.googleapis.com/auth/gmail.readonly
Philo can connect multiple Google accounts. Account metadata is stored in settings.json, while access and refresh tokens stay in the OS credential store.
If your OAuth consent screen is still in testing and your audience is external, add your Google account as a test user before signing in. Gmail read-only is a restricted scope, so a public rollout may require Google verification.
Philo is licensed under the GNU General Public License v3.0 or later. See LICENSE.
