kith-ai / README.md
ysharma's picture
ysharma HF Staff
Add demo video + social post links to README (hackathon submission) (#1)
842d024
|
Raw
History Blame Contribute Delete
6.32 kB
---
title: Kith
emoji: 🧑
colorFrom: red
colorTo: yellow
sdk: gradio
sdk_version: 6.17.3
python_version: "3.12"
app_file: app.py
pinned: false
license: apache-2.0
short_description: Relationship memory built on small open models
thumbnail: https://huggingface.co/spaces/build-small-hackathon/kith-ai/resolve/main/assets/brand-images/kith-ai-brand-1.jpeg
models:
- CohereLabs/cohere-transcribe-03-2026
- openbmb/MiniCPM4.1-8B
tags:
- build-small-hackathon
- backyard-ai
- track:backyard
- openbmb
- minicpm
- sponsor:openbmb
- achievement:offbrand
- achievement:fieldnotes
- off-brand
- best-demo
- gradio
- zerogpu
---
# Kith 🧑
![Kith β€” the thoughtful thing to do today](assets/brand-images/kith-ai-brand-1.jpeg)
**A relationship memory built entirely on small open models β€” remember the
people in your life, and surface the thoughtful thing to do today.**
Record a conversation β†’ a 2B model transcribes it β†’ an 8B model extracts the
people in it and what matters about them β†’ it's kept in a local SQLite file you
own β†’ Kith surfaces the thoughtful thing to do today: the birthday in five days,
the photos you promised, the friend you've lost touch with.
The data Kith handles is your most intimate β€” family, health, friendships β€” so
it's built on **small, open models under the hackathon's 32B cap**, and your
memory lives in a **local file you own, not a cloud account or database.** Small
isn't the limitation here; it's the point.
## How it works
![Small models. A memory that's yours β€” Ears 2B β†’ Brain 8B β†’ Your file β†’ Today](assets/brand-images/kith-ai-brand-5.jpeg)
```
πŸŽ™ record / upload (browser mic, decoded + resampled to 16kHz in-browser)
β†’ πŸ‘‚ Cohere Transcribe (2B, Apache-2.0) β€” speechβ†’text, on ZeroGPU
β†’ 🧠 MiniCPM 4.1-8B (OpenBMB) β€” extracts people / signals / commitments /
decisions as strict JSON
β†’ πŸ—„ SQLite β€” a local file you own, no cloud database
β†’ 🧑 the Today feed β€” thoughtful / owed / reconnect / remember cards
```
![Be the friend who remembers β€” Rose's birthday, you owe Daniel the photos, call Mom](assets/brand-images/kith-ai-brand-3.jpeg)
- **Custom UI over `gr.Server()`** β€” the whole screen is hand-written HTML/CSS/JS
in Kith's design language (Fraunces, cream + terracotta), talking to Gradio
API routes via `@gradio/client`. No default Gradio widgets anywhere.
- **Grounded extraction** β€” every memory carries a verbatim source quote,
verified against the transcript; tap any card to see exactly what was said.
An item with no real quote is dropped, not shown.
- **No diarization needed** — Cohere Transcribe is pure audio→text; MiniCPM
infers "me vs. them" from conversational context.
- **Your memory, yours** β€” conversations become rows in a local SQLite file,
with dismiss + "start fresh" controls. No cloud database, no account.
![Your memory lives in a file you own β€” no cloud, no account](assets/brand-images/kith-ai-brand-4.jpeg)
## Models (all small, all open)
| Role | Model | Size | Runtime |
|---|---|---|---|
| Ears | [CohereLabs/cohere-transcribe-03-2026](https://huggingface.co/CohereLabs/cohere-transcribe-03-2026) | ~2B | on ZeroGPU |
| Brain | [openbmb/MiniCPM4.1-8B](https://huggingface.co/openbmb/MiniCPM4.1-8B) | 8B | OpenBMB hosted MiniCPM endpoint |
The whole design is built behind one `extract()` seam (`brain.py`) with a
`KITH_BRAIN` switch β€” `gpu` / `hosted` / `local` (CPU GGUF via llama.cpp) β€” so
the brain can move fully on-device without touching the rest of the app.
## Running it
Space secrets: `HF_TOKEN` (the ASR model is gated β€” the token's account must
have accepted access on its model page) and `OPENBMB_API_KEY` (the MiniCPM
endpoint). Space variable `KITH_BRAIN=hosted`.
Locally on a CPU dev box: `pip install -r requirements.txt gradio spaces &&
KITH_BRAIN=hosted python app.py`; set `KITH_SKIP_ASR=1` to skip the gated ASR
weights during UI work.
## How I built it
Kith is a single Gradio `gr.Server()` app, designed around one clean **ingestion
seam**: a conversation becomes a row of text, and everything downstream is
source-agnostic.
1. **Ears** β€” Cohere Transcribe 2B runs on ZeroGPU; the browser decodes and
resamples any clip to 16 kHz in-page (WebAudio), so the server never needs
ffmpeg.
2. **Brain** β€” MiniCPM 4.1-8B turns the transcript into strict JSON
(people / signals / commitments / decisions), behind one `extract()` seam
with a `KITH_BRAIN` switch (`gpu` / `hosted` / `local`).
3. **Grounding** β€” every extracted fact must carry a **verbatim quote** that is
verified against the transcript; if there's no real quote, the fact is
dropped, not shown. Tap a card to see the source sentence.
4. **Memory** β€” a local SQLite file: people are upserted (so the same person
accrues memory across conversations), with dismiss + "start fresh" controls.
5. **The feed** β€” four rules surface what matters today: *thoughtful* (a dated
event soon), *owed* (a promise you made), *reconnect* (someone gone quiet),
*remember* (a fresh, undated signal).
6. **The face** β€” a hand-written HTML/CSS/JS page over `gr.Server()` in Kith's
design language, with a conversation-history sidebar and a responsive
desktop/phone layout. No default Gradio widgets.
**Tech used:** Gradio (`gr.Server`) Β· Cohere Transcribe 2B (ASR) Β· MiniCPM
4.1-8B, OpenBMB (extraction) Β· Hugging Face ZeroGPU Β· SQLite Β· `@gradio/client`
Β· WebAudio API Β· Fraunces + Inter.
## Why it fits Build Small
- **Every model is small + open, well under 32B** β€” a 2B ASR and an 8B
extractor. Small isn't the constraint; for an app about your most private
relationships, small + open + a memory you own *is* the pitch.
- **OpenBMB MiniCPM is the brain** β€” the whole "what matters about this person"
step is MiniCPM doing grounded, schema-constrained extraction.
- **Off-Brand** β€” a fully hand-written `gr.Server()` UI, no stock Gradio look.
- **Field Notes** β€” an honest writeup of what an 8B can and can't do at this
task (see the repo's spike notes).
## Demo video
▢️ **[Watch the Kith demo on YouTube](https://www.youtube.com/watch?v=7l51vC20esM)**
## Social post
πŸ“£ **[Read the launch post on X](https://x.com/ooi_yee_fei/status/2066884944480387503)**