Agentero
에이전트를 연결해 로컬 Vault에 연구 컨텍스트를 보관·Zotero에서 무결점 이동·읽고 이해·재활용
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Real-time focus accountability built on Claude vision. Screen + camera analysis, live focus score, AI coaching report, study rooms with leaderboards, weekly wagers, and a real video lapse of every session.
npm run setup # installs deps, generates Prisma client, pushes schema, copies .env
# edit .env to add your ANTHROPIC_API_KEY and a NEXTAUTH_SECRET
npm run dev # Next.js on :3000 + socket server on :3001
Open http://localhost:3000, click Get started, and create an account at /signup. From there start a focus session at /session.
If the UI ever looks unstyled / "text-only", run
npm run setupagain. That regenerates the Prisma client and clears Next.js's stale cache — the two most common culprits.
The standalone planner files are focus-app.html, focus-app.css, focus-logic.js, focus-auth.js, and firebase-config.js. The planner now uses Firebase email/password auth and keeps timer runtime in local storage, so a refresh will restore an active timer.
To move an old local planner into a public account:
focus-app.html locally and go to Settings → Backup Data → Export backup.firebase-config.js.{
"rules": {
"users": {
"$uid": {
".read": "auth != null && auth.uid === $uid",
".write": "auth != null && auth.uid === $uid"
}
}
}
}
users/<firebase uid>/plannerState in Realtime Database and also keep a local browser cache.| Variable | Required? | What it does |
|---|---|---|
ANTHROPIC_API_KEY | Yes | Powers live focus analysis + the end-of-session coaching report. |
NEXTAUTH_SECRET | Yes | Encrypts the auth session cookie. openssl rand -base64 32 works. |
DATABASE_URL | Yes | Defaults to a local SQLite file. Swap for Postgres in production. |
GOOGLE_CLIENT_ID / GITHUB_CLIENT_ID | Optional | Only needed if you want Google / GitHub OAuth. Email + password works without them. |
Focus AI is a standard Next.js app and deploys cleanly to Vercel, Render, Railway, Fly, or anywhere that runs Node 20.
goat-app.vercel-build (prisma generate && prisma db push --accept-data-loss && next build).NEXTAUTH_URL = your Vercel URL.The Socket.io leaderboard server (server/index.js) is a separate process — deploy it on Render / Fly / Railway as a Node service and set NEXT_PUBLIC_SOCKET_URL to its public URL. The web app works without it; only live room leaderboards need it.
npm install
npx prisma generate
npx prisma db push --accept-data-loss # or `prisma migrate deploy` with migrations
npm run build
npm run start
# in another process:
npm run server
Put it behind a reverse proxy (Caddy / Nginx) with HTTPS — getDisplayMedia and getUserMedia only work on https:// (or localhost).
/session.runImmediateAnalysis():
/api/analyze-frame.focusScore, isFocused, distractions, behaviors, summary) updates Zustand state, the live ring score, and the action log..webm video lapse client-side via MediaRecorder (no upload, no storage cost). The session and AI report are persisted via PATCH /api/session.src/
├── app/
│ ├── login/, signup/ # Email + password auth
│ ├── session/page.tsx # The focus session UI
│ ├── api/analyze-frame/route.ts # Claude vision endpoint
│ ├── api/session/route.ts # Start / end + coaching report
│ ├── api/auth/register/route.ts # Account signup (PBKDF2 password)
│ └── api/auth/[...nextauth]/route.ts # NextAuth handler (credentials + OAuth)
├── components/session/FocusRuntimeProvider.tsx # The 4s analysis loop + alerts
├── lib/openai.ts # Claude prompts + robust JSON parsing
├── lib/auth.ts # NextAuth config + PBKDF2 helpers
├── lib/createTimelapse.ts # Side-by-side webm lapse builder
└── store/sessionStore.ts # Zustand session state
Prisma schema in prisma/schema.prisma. Every focus session stores a row in FocusSession, every AI-analyzed frame in FrameAnalysis, and the end-of-session coaching report in SessionReport. Raw screenshots and camera frames are never stored — only the AI's structured analysis. Timelapse video is built and held in the browser.
| Layer | Tool |
|---|---|
| Frontend | Next.js 14 (App Router), React, Tailwind CSS |
| State | Zustand |
| Real-time | Socket.io (rooms + leaderboards) |
| Auth | NextAuth credentials provider (PBKDF2) + optional Google / GitHub |
| Database | Prisma — SQLite for dev, Postgres for prod |
| AI | Claude Sonnet 4.5 (vision + reasoning) |
| Charts | Recharts |
| Video | Browser-native MediaRecorder + <canvas> |