Serein
Rust로 만든 가볍고 성능 좋은 Discord 전용 네이티브 클라이언트
텍스트 AI 친구가 당신의 일상을 기억하고 안부를 확인하며 오늘 케냐 소식을 알려주는 정직한 AI이며 18세 이상 무료로 시작할 수 있습니다
Text AI friends who remember your life, check in on you and know what's happening in Kenya today. Always honestly AI. Free to start, for adults 18+.
소셜GitHub @maith96가동 상태 확인 전운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Friends who remember. Sasamigo, by Leinalok Labs, is an AI chat app built with Next.js + Vercel AI SDK + NVIDIA NIM and/or Gemini + Supabase, hosted on Vercel.
It includes a public REST API (/api/v1) so a later app (mobile, desktop, another site) can use the same accounts and chats. See API.md.
Features: streaming replies · Markdown and code blocks with copy buttons · chats saved per user · auto-titled, renameable and deletable chats · model picker · starter prompts · stop and retry · friendly error messages · per-user rate limit · mobile layout · dark mode (follows the system setting).
nvapi-).supabase/schema.sql and click Run.
Then do the same with supabase/personas-seed.sql to load the built-in personas.
Both are safe to re-run, which is also how you upgrade after pulling new changes.anon) key.http://localhost:3000, later your Vercel URL).cp .env.example .env.local # then fill in the values
npm install
npm run dev
Open http://localhost:3000, sign up, and start chatting. By default Supabase emails a confirmation link on sign-up. For quicker local testing you can turn off Authentication → Sign In / Providers → Email → Confirm email.
.env.local (Settings → Environment Variables).src/
app/
page.tsx # chat page (requires sign-in)
login/ # sign in / sign up
admin/stats/ # persona stats (admins only)
auth/callback/route.ts # email confirmation links
api/chat/route.ts # streaming endpoint for the website UI
api/v1/... # public REST API for other apps (see API.md)
components/ # chat UI (sidebar, messages, model picker, markdown)
lib/
chat-service.ts # shared chat logic: history, Gemini call, saving, rate limit
models.ts # "Terra Fast" etc. → Gemini model IDs
api.ts # API auth (Bearer token or cookie), errors, CORS
reply-stats.ts, feedback.ts # reply style metadata, thumbs up/down, admin stats
supabase/ # Supabase clients
proxy.ts # keeps the login session fresh; redirects signed-out users
supabase/schema.sql # tables + Row Level Security
supabase/personas-seed.sql # built-in personas (generated, don't edit)
personas/*.json # built-in persona character sheets (source of truth)
public/avatars/ # built-in persona avatars
Each persona is a structured character sheet (src/lib/persona-schema.ts): identity, personality,
behaviour rules, communication style with situational examples, knowledge, and relationship.
Built-in personas live in personas/*.json. After editing one:
npm run personas:seed # validates the JSON and regenerates supabase/personas-seed.sql
Then run supabase/personas-seed.sql in the Supabase SQL Editor.
Memory and check-ins: after each reply, a fast model extracts lasting facts (about the user, and details the
persona said about itself) into memories; a grounding check drops anything that wasn't actually said. Users can see
and delete them via the 🧠 Memory button. relationships tracks how much they've talked; the stage
(new → warm → close) needs both messages and days. When a user reopens a persona chat after the persona's
checkIn.afterHours, the persona texts first (never stacked; gentle wellbeing check only if they were struggling).
Safety layers: crisis language and "I'm under 18" statements are detected in code and add an urgent instruction
to that reply; crisis messages also always show a helpline card in the UI (and crisis_support in the API).
Every reply is saved with style metadata (words, emoji, bubbles, whether it asks a question, time to the first word,
a prompt_version that changes when the persona or prompt builder changes) and a reply_id shared by its bubbles.
Users can rate replies with 👍 / 👎 (optional reason). Admins get a stats page at /admin/stats with, per persona
and model: thumbs-up rate, how often and how fast users answer, reply style, latency, day-1/day-7 return and messages
per session; check-ins are shown separately.
supabase/schema.sql):
insert into public.admins (user_id) select id from auth.users where email = '[email protected]';PROMPT_VERSION in src/lib/prompt-builder.ts when you change the prompt layers.여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗