Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A Next.js app that gives a Retell AI voice agent the ability to answer the firm's phone, book appointments, take down enquiries, put callers through to a real person when they ask, and email a summary of every call.
Caller ⇄ Retell agent → this app → appointments, enquiries and
custom records (its own database)
→ a person's mobile (screened transfer)
→ the firm's inbox (call summaries)
Everything a call produces is stored in this app's own database. There is no spreadsheet to share and no external calendar to connect.
Create a Supabase project, then open SQL Editor → New query, paste the whole
of database-schema.sql, and run it.
That one file is the entire schema. Ignore the numbered
supabase-migration-*.sql files — those upgrade older deployments and partly
contradict each other.
From Project Settings: copy the URL from Data API, and the
service_role key from API Keys. Not the anon key — the app needs to
bypass row level security, which is exactly why that key must never reach a
browser.
Call summaries go out over Gmail SMTP, which needs an App Password:
myaccount.google.com → Security → turn on 2-Step Verificationabcd efgh ijkl mnopUse the Gmail address as SMTP_USER and those 16 characters as
SMTP_PASSWORD. Paste them with the spaces — they're stripped automatically.
The account password will not work and Google's rejection message doesn't
explain why.
Import the repo into Vercel and add every variable from .env.example.
Order matters on the first deploy. Set APP_BASE_URL to the real
deployment URL, redeploy, and only then press Save on each agent. The tool
and webhook URLs are baked into the agent when it's saved, so an agent saved
before APP_BASE_URL was right keeps calling the wrong host.
RETELL_API_KEY — the one that catches everybodyRetell issues more than one API key and only one of them signs webhooks — it has a webhook badge beside it in the dashboard. Use that one.
With any other key the agent still answers the phone and holds a normal conversation, but every tool call and webhook returns 401, so nothing is ever booked, recorded or emailed. Nothing in the console looks wrong; the failures only appear in Retell's own call log.
Set SETUP_TOKEN, open /setup, and run the checks. They exercise the real
code paths — the availability lookup, a booking write, the records tables, the
SMTP login — and name the exact fix for anything that fails.
Remove SETUP_TOKEN once the firm is live.
If the firm runs follow-up campaigns, point a cron job at:
POST https://<deployment>/api/cron/campaign-tick
Header: x-cron-secret: <CRON_SECRET>
Every 1–5 minutes. cron-job.org is fine. Each client needs its own job and its
own CRON_SECRET.
| Page | What it's for |
|---|---|
| Overview | Call volume, bookings, enquiries at a glance |
| Appointments | The diary, grouped by day. Cancelling frees the slot immediately |
| Enquiries | Callers who left details without booking, plus any custom logs |
| Call history | Every call with its summary and recording |
| Contacts | One record per phone number, with call history and status |
| Phone agents | Prompt, voice, model, transfer behaviour, custom logs, summary email |
| Outbound calling | Campaigns, lead import, calling windows, retries |
| Phone numbers | Import a number from Twilio or any SIP carrier |
| Setup checks | Build the environment variables and verify the deployment |
When a caller asks for a person, the agent can ring a real number and have a screening agent ask whether they'll take it — stating who's calling and what it's about — before connecting anyone. Press 1 to accept, 2 to decline, or just answer out loud. On a decline the caller is told why and carries on with the agent.
Turn it on under Transfer to a human on any agent. Saving creates a second
agent in Retell called <Agent name> — screener; leave that one alone in the
Retell dashboard, the app manages it.
npm install
cp .env.example .env.local # fill it in
npm run dev
Retell calls these endpoints from its own servers, so localhost is unreachable
for tool calls. Use a tunnel and set APP_BASE_URL to the tunnel URL if you
need to test tools locally.