Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kairos - Beat the resistance, not the clock

An agentic anti-procrastination companion built for the Vibe2Ship hackathon (Coding Ninjas × Google for Developers), Problem Statement 1 - The Last-Minute Life Saver.

Most productivity tools send reminders. The behavioral-science research is unanimous that reminders don't work, because procrastination is an emotion-regulation problem, not a memory problem - people avoid tasks to escape the negative feelings the task triggers. Kairos intervenes on why a task is stuck, not when it's due.

🚀 Live

On the empty screen, click Load demo scenario to see the agent reason in seconds, then Connect Gemini to use your own key.

What it does

  • Avoidance Diagnostician - reads your interaction signals (opens without progress, snoozes, reorders, estimate inflation) and infers the latent blocker, then asks targeted unblocking questions instead of nagging. It "thinks aloud" (streamed) before committing to a verdict.
  • Minimum Viable Next Action - the smallest physically-doable step + an implementation intention ("When X, then I will Y").
  • Unpack & re-estimate - decomposes the task and surfaces the planning-fallacy gap (naïve vs. realistic estimate).
  • Cost-of-Delay + Pre-Mortem - quantifies and dramatizes the cost of slipping, then converts each imagined failure into a preventive action.
  • Future-Self dialogue + Commitment lock - chat (streamed) with your post-deadline self, then lock a self-chosen commitment (drafted, approved by you, never auto-sent).
  • Multi-agent debate - an advocate, a skeptic and a judge argue "do it now vs. it can wait", citing your task's own signals.
  • Replan my day - orders your tasks into time blocks for momentum + deadlines, around your real Google Calendar, with a reason per block.
  • Reflexion memory - when an intervention is ignored or a task slips, the agent writes a self-critique and prepends it to future reasoning.
  • Reasoning Trace + Autonomy slider - every step (plan → act → observe → reflect) streams transparently; autonomy is a visible control (suggest / confirm / auto) and the agent can act on its own with an adaptive, self-backing-off intervention threshold.
  • Habits (recurring tasks + streaks), voice input, browser reminders, light/dark theme, command palette (⌘/Ctrl-K), and a landing page.
  • Accounts + cross-device sync (Firebase Auth + Firestore) - off by default; the app runs fully local otherwise.

Tech stack

  • Vite + React 19 + TypeScript, Tailwind v4
  • @google/genai → Gemini 2.5 Flash + Flash-Lite, structured output + streaming, with 429/503 exponential backoff
  • localStorage by default; Firebase Auth + Firestore when configured
  • Vitest (unit), ESLint (flat) + Prettier, GitHub Actions CI

Diagrams

Architecture

Kairos architecture diagram

Use cases

Kairos use-case diagram

Data model

Kairos class diagram

Run locally

npm install
npm run dev      # http://localhost:5173
npm run build    # production build → dist/
npm test         # unit tests
npm run lint     # eslint
npm run format   # prettier --write

Then click Connect Gemini in the app and paste a key from Google AI Studio - or copy .env.example to .env and set VITE_GEMINI_API_KEY. No key? The task list and instrumentation still work; only the AI reasoning needs it.

New here? Click Load demo scenario on the empty screen to try the agent immediately.

Integrations (all off unless configured in .env)

Feature Env Notes
Google Calendar VITE_GOOGLE_CLIENT_ID OAuth client ID (Web app) with your origin allowlisted.
Accounts + sync VITE_FIREBASE_* Enable Google / Email / Anonymous in Firebase Auth; publish Firestore rules (see SECURITY.md).

Deploy

This app is built and deployed with Google AI Studio (Build Mode → Publish), which ships it to Cloud Run - that's the live link above. The Gemini key is injected server-side by AI Studio at deploy time; VITE_* integrations (Firebase, Calendar) are read from the AI Studio project's environment settings.

It also runs as a plain static SPA anywhere - e.g. Firebase Hosting:

npm run build
firebase deploy --only hosting   # after `firebase init hosting` (public dir: dist, SPA: yes)

VITE_* vars are inlined at build time, so build with your .env in place.

Privacy

Tasks stay in your browser (and your own Firestore doc if you sign in) except the text sent to Gemini for reasoning. On the free tier prompts may be used for training - keep sensitive data out (the app surfaces this caveat too).

Project structure

src/
  types.ts            # data model
  store.tsx           # KairosProvider - the agent brain + plan→act→observe→reflect
  lib/
    gemini.ts         # AI capabilities + schemas + backoff + streaming
    storage.ts        # localStorage persistence
    firebase.ts       # guarded Firebase init
    auth.tsx          # AuthProvider / useAuth
    firestore.ts      # per-user snapshot sync
    gcal.ts           # Google Calendar
    theme.ts notify.ts useSpeech.ts toast.ts seed.ts util.ts
  components/         # TaskCard, ReasoningTrace, ReplanPanel, DebateModal,
                     # FutureSelfModal, CommandPalette, SettingsModal, AuthModal, …
  App.tsx

Contributing & policies

See CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SECURITY.md. Licensed under MIT.

About

An Agentic Anti-Procrastination Companion. Vibe2Ship (Coding Ninjas × Google for Developers)

Resources

Code of conduct

Contributing

Security policy

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages