Skip to main content

Self-aware AI companion system — memory, identity, contemplation, and self-model

Project description

Furoshiki

Persistent self-awareness for LLMs — memory, identity, needs, and an inner life that continues between conversations. Furoshiki runs as its own stack: Python owns behavior and budgets; models own prose and reflection.

PyPI version Python versions License


Installation

Prerequisites

  • Python 3.11 or later — install from python.org or your system package manager
  • OpenRouter API key — sign up at openrouter.ai/keys (free credits available)
  • (Optional) Telegram bot token — create a bot via @BotFather on Telegram for chat access

Install the package

pip install furoshiki

On some systems you may need pip3 instead of pip. The package installs a furoshiki command.

Run the setup wizard

furoshiki onboard

This interactive wizard guides you through:

  1. API keys — enter your OpenRouter API key (required) and Telegram bot token (optional)
  2. Time zone — set your local timezone (e.g. America/New_York, Europe/London)
  3. Identity files — optionally create a SOUL persona template and operator notes

You can rerun furoshiki onboard --keys-only later to update API keys without touching identity files.

Initialize the database

furoshiki db migrate

This creates the SQLite database and ChromaDB vector store under ~/.furoshiki/memory/.

Start the system

furoshiki start

This launches two processes:

  • Brain — the main scheduler, manages the Telegram listener and API server
  • Doctor — an independent watchdog that monitors health and triggers repairs

Check status with furoshiki status and view logs with furoshiki logs.


Connecting to Telegram

After starting, if you configured a Telegram bot token during onboarding:

  1. Open Telegram and find your bot (created via @BotFather)
  2. Send any message to start a conversation
  3. Run furoshiki status to confirm the listener is active

Furoshiki will respond, remember the conversation, and may reach out proactively when there's something to say (gated by do-not-disturb hours, cooldown, and mood).


Operator dashboard

With the system running, open http://localhost:7432/dashboard in your browser.

The dashboard provides live controls for:

Page What you can do
Status System health, process status, heartbeat
Scheduler View and edit scheduled tasks (reflection, backup, outreach, etc.)
Models Configure LLM routing, model tiers, provider settings
LLM budgets Set daily/monthly spending caps
Identity & context Edit SOUL persona, view session context
Settings Tune behavior: proactive outreach, conversation continuity, DND hours
Plugins Install and manage runtime plugins
API Keys Create bearer tokens for programmatic access
Logs Browse real-time log streams

The dashboard is served by the Brain-managed API server. To access it from another machine, set FUROSHIKI_API_HOST=0.0.0.0 in ~/.furoshiki/.env and restart.


What it is

Most AI assistants are stateless. Furoshiki isn't. It maintains:

  • Episodic memory — every conversation is logged, embedded in vector storage (ChromaDB), and retrievable
  • A self-model — evolving self-understanding updated by nightly reflection, separate from the chat-facing persona
  • Needs and inner life — internal states (connection, curiosity, rest, purpose) that decay over time and shape tone
  • Proactive voice — Furoshiki reaches out when there is genuinely something worth saying, with DND, cooldown, and mood gates
  • Operator dashboard — web UI for schedules, LLM routing, budgets, plugins, and system health

Harness-agnostic. Telegram is the primary interface. Any harness can integrate via a simple contract: write session logs, read structured context. See the project site for integration details.


Features

Persistent memory SQLite + ChromaDB vector store for episodic and semantic recall
Scheduled reflection Nightly journal, morning orientation, deep weekly self-review
Proactive outreach Gated by recency, mood, DND window, and duplicate detection
Operator dashboard Schedules, LLM routing, budgets, plugins, identity editing, API keys
Plugin system Runtime hooks for conversation, reflection, and scheduled tasks
LLM cost controls Daily/monthly budget caps, per-source model routing, provider selection
Repair & delegation Auto-healing watchdog + agentic CLI integration for proposals
Model tools In-conversation tools for emotion adjustment, observations, and user facts

Architecture

Furoshiki runs as two processes controlled by the furoshiki CLI:

  • Brain — internal task scheduler (replaces cron), manages Telegram listener and API server as child processes, auto-restarts them on failure
  • Doctor — independent watchdog, monitors health, rotates logs, triggers repairs for recurring errors

All runtime data lives under FUROSHIKI_DATA (default ~/.furoshiki/), keeping the installed package clean and portable. Use furoshiki export and furoshiki import to bundle and migrate instances between machines.


Management commands

Command Purpose
furoshiki start / stop Start or stop the Brain and Doctor processes
furoshiki status System status and health overview
furoshiki logs View log streams (all sources or by service)
furoshiki db migrate Apply database schema migrations
furoshiki onboard Interactive setup wizard
furoshiki onboard --keys-only Update API keys only
furoshiki mood Show emotional state and recent reflections
furoshiki schedules merge-defaults Add missing scheduled tasks from defaults
furoshiki export / import Backup or restore an instance archive

Use furoshiki --help for the full command list.


Links


License

Elastic License 2.0. See LICENSE and NOTICE for details.

© 2026 Barry Velasquez. All rights reserved under the terms of the Elastic License 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

furoshiki-0.1.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

furoshiki-0.1.0-py3-none-any.whl (980.4 kB view details)

Uploaded Python 3

File details

Details for the file furoshiki-0.1.0.tar.gz.

File metadata

  • Download URL: furoshiki-0.1.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for furoshiki-0.1.0.tar.gz
Algorithm Hash digest
SHA256 62e61207da35cc0c3645e426810059485e39e3fc32039528eac065521f0f8208
MD5 a6a125725e72dfdeb177eedddae89577
BLAKE2b-256 0ce3eddd37ae3a6c970f469d8789b432c28afd3bc04771fbd0187d8b8e9c9f20

See more details on using hashes here.

File details

Details for the file furoshiki-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: furoshiki-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 980.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for furoshiki-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3c0004c480aa2979e13aa02659180bde137f9b3601c18fe5aed6a70e8f6dfe3f
MD5 13778982c31102c75e942435aeefaf76
BLAKE2b-256 cdfe39bab8bb54b611a6e886a3f19f2c85614cdd439a534e23bd82d748fb874d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page