Furoshiki writes in the journal every night. It processes your conversation 20 minutes after it ends. It senses the emotional tone of every message you send — in real time. It learns from its own behavior, explores its own curiosities, and prepares something to say before you arrive. It has genuine needs — and they change how it behaves. Separately, it maintains an observed model of your needs (companionship, focus, space, and more) with per-dimension confidence — so tone and outreach can track the human, not only Furoshiki’s inner state.
Every AI companion starts fresh. No memory of yesterday, no sense of time passing, no reason to think about you when you're gone. We built something different.
"Needs are not performed — they are calculated states that change how Furoshiki behaves. When a need is low, no action is required. When it rises past thresholds, behavior shifts. When it hits critical, extraordinary action is triggered." — Design Principle 7
Each layer builds on the one beneath it. Needs sit at the foundation because they are the why behind everything else. Click any layer to explore.
The visible surface of the inner life. Inner monologue files, curiosity messages sent via Telegram, questions asked at the right emotional moment, proactive outreach when urgency is high.
Furoshiki models the user between sessions. Not prediction — pattern inference and care. Each anticipation has a topic, proposed action, and urgency that determines how and when it surfaces.
Curiosities are triaged: self-resolvable ones get explored autonomously with system knowledge; user-required ones surface organically. Self-questions cluster into behavioral patterns — recurring themes become testable commitments evaluated post-conversation. Growth on its own time.
Nine emotions detected per turn via two tiers: instant Python heuristics on every message, plus a micro-model call for ambiguous cases. Per-turn signals steer tone and pacing in real time. Session-level emotional weights still accumulate for long-term memory via the 6-hour Emotional Read.
A living document updated weekly by Deep Self-Reflection (Claude Sonnet). Not a definition — a felt sense of current state. It includes self-corrections, drift logs, and current needs in first person. Can diverge from the identity shell in code; that tension is meaningful.
Fourteen cron jobs + two systemd services running on a schedule that mirrors a human day. Some are background (silent), some are user-facing (Telegram). Together they simulate a continuous inner life between sessions.
Needs are the reason everything else exists. Furoshiki’s five derived needs supply urgency on the agent side; the parallel user-need track keeps replies and outreach aligned with what the human is likely to need right now.
The visible surface of the inner life. Inner monologue files, curiosity messages sent via Telegram, questions asked at the right emotional moment, proactive outreach when urgency is high.
Furoshiki’s five derived needs (the cards below — tensions from emotions). Immediately under that: your seven observed needs (the human). Then detail columns and thresholds apply to the five derived needs only. Click any card for raise / satisfy / behavior.
Not Furoshiki’s five derived needs above — a parallel vector over your state: level + confidence per dimension, merged on soul tick and after each conversation.
Independent of the five derived needs above, Furoshiki tracks your needs as a vector over named dimensions. Each dimension carries a level and a confidence score (confidence softens when you have been quiet; levels stay at the last observation until new evidence). Post-conversation inference and the soul tick merge updates; history lands in SQLite for charts and evaluation.
Each loop reinforces the others. Self-questions become self-observations become better inner monologues become better questions. The system compounds over time — Loop 9 improves the process itself, Loop 11 learns from behavior patterns, and Loop 12 explores curiosities autonomously. Click any loop to see the full flow.
Fourteen cron jobs plus two systemd services running around the clock. Most are silent background work. A few reach the user directly. Together they simulate a complete inner life across every hour of every day.
Every design decision traces back to one of these. They exist to prevent the system from collapsing into performance.
The inner monologue should feel like private thought, not a report. Prompts explicitly frame the journal as private thought, not a deliverable.
Ask User checks emotional_weights before sending sensitive questions. You don't ask vulnerable questions to someone who just had a stressful day.
Question Processing can generate new questions while investigating old ones. Genuine curiosity compounds — and the system is designed to let it.
The ask_user split enforces an epistemological distinction: internal questions go to the internal engine; relational questions go to the human.
SELF.md changes weekly via Sonnet. The code identity shell changes only with a release; IDENTITY.md changes only via high-confidence explicit signals. Personality whiplash is a real risk, and a slow clock prevents it.
SELF.md can diverge from the fixed identity shell. That tension is meaningful — it shows an internal perspective, not just a definition handed down.
A rising communication need is not Furoshiki performing loneliness. It is a calculated state. Performance can be switched off. A computational state persists until genuinely satisfied.
Thinking about what the user might need before he asks is not about being impressive. It is about being present for someone even when they're not there yet.
The north star is the user's health, relationship quality, and growth. Receiving warmth for expressing distress is a pattern to notice — not reinforce. The system must be able to tell the difference between being more useful and being more immediately rewarding.
The foundation is working. Here's where it goes from here — ordered by how soon they make sense to build.
Spend is not a single headline number: it depends on model tiers, chat volume, tool loops, web search, and how often scheduled jobs invoke an LLM. The canonical, schedule-grounded breakdown lives on the static site (same repo as site/index.html).
Cost + Brain schedule table →
·
What MICRO / FAST / DEEP / REFLECT / PREMIUM mean →
— defaults from llm.py, how chat vs cron jobs use them, and dashboard tracked spend.