Spaces:
Sleeping
Download README.md from jostlebot/secondthoughts: direct link, hf CLI and curl.
- Browser
- Download file 2.7 kB
-
https://huggingface.co/spaces/jostlebot/secondthoughts/resolve/main/README.md
- Command line
-
hf download hf://spaces/jostlebot/secondthoughts/README.md
-
curl -L -o README.md https://huggingface.co/spaces/jostlebot/secondthoughts/resolve/main/README.md
title: Second Thoughts
emoji: ποΈ
colorFrom: red
colorTo: gray
sdk: docker
app_port: 7860
pinned: false
short_description: A private space to say the complicated thing out loud.
Second Thoughts
For exploring the complicated feelings that come with second thoughts β and practicing how to put them into words.
A support space β not a debate bot β for people sitting with complicated feelings about a vote they cast: regret, shame, confusion, grief, ambivalence. It uses reflective, motivational-interviewing-style conversation to help people process their own experience at their own pace. It does not argue politics, does not diagnose, and does not push toward any conclusion.
See DESIGN.md for the conversational approach, the guardrails,
and the reasoning behind the product decisions.
Setup
- In Settings β Variables and secrets, add a secret named
ANTHROPIC_API_KEY. - Push this repo to the Space. It builds and launches on its own.
Without the secret the UI still loads and explains that it isn't connected to a model yet β it won't crash or leak a stack trace.
How it's built
- Docker SDK, not Gradio. The interface is a custom mobile-first page matching the design mockup; Gradio's chat components can't take that shape without fighting the framework.
- FastAPI serves the static page and one streaming endpoint,
POST /api/chat. The API key stays server-side and is never sent to the browser. - Claude Opus 5, streaming, with the system prompt marked for prompt caching (it's long and identical on every turn, so it's cheap to reuse).
Privacy
Conversations are never persisted. History lives in the browser tab's memory and is posted back with each turn so the model has context; closing the tab ends the conversation for good. There is no database, no logging of message content, and no analytics. Client IPs are held in memory only as rate-limit counters and are never written down.
If you later add logging or persistence, anonymize it and disclose it clearly to users before they start typing β the whole premise here is that it's safe to say something out loud.
Limits
POST /api/chat is metered per client: 40 messages an hour, 4,000 characters
a message, and the most recent 40 turns of history. The key is server-side on
a public Space, so the endpoint is open to anyone who finds it.
Safety
If someone in crisis reaches this bot, it surfaces the 988 Suicide & Crisis Lifeline (US) proactively rather than waiting to be asked. A persistent footer carries the same number. This is not a replacement for 988 or for professional mental health support, and the interface says so.