A newer version of the Gradio SDK is available: 6.20.0
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 π§‘
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
π 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
- 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.
Models (all small, all open)
| Role | Model | Size | Runtime |
|---|---|---|---|
| Ears | CohereLabs/cohere-transcribe-03-2026 | ~2B | on ZeroGPU |
| Brain | 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.
- 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.
- Brain β MiniCPM 4.1-8B turns the transcript into strict JSON
(people / signals / commitments / decisions), behind one
extract()seam with aKITH_BRAINswitch (gpu/hosted/local). - 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.
- Memory β a local SQLite file: people are upserted (so the same person accrues memory across conversations), with dismiss + "start fresh" controls.
- 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).
- 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



