Turn live perception into persistent memory.
It is a context as a service(CAAS) platform. It captures context from voice, screen sharing, files, and connected tools like Notion, Gmail, Drive, and Slack, then keeps that context available for future use across agents and tools.
Since it has access to Cognee, it can maintain a graphical context between different sessions, not only materialistic data, but also the visual contextual ingestion, for adding daily life activity/events to the unified platform
By default comes with a canvas page to maintain and manage content to pass down to downstream agents as an MCP server. These are specially configured as bi-directional streaming mcp's, so coding agents can update and remove the context as per the user request.
Cognee is the memory layer behind Kazake. We use it to store, organize, and retrieve project context as structured memory, so the AI can remember important details, group related information, and use the same context again later. It formulates a huge, dense graph connection that can reason between different activities that happened across different days and can perform parallel reasoning with the configured tools, making it superior to any other tools out there.
check the demo
weekend-hack/
├── server.py # FastAPI backend — Cognee proxy, WebSocket, file upload
├── cognee_realtime_graph.py # CLI for interactive knowledge graph building
├── static/index.html # GoJS graph visualization (served by FastAPI)
├── canvas-whisper-sparkle/ # React frontend (TanStack Start + Vite + tldraw)
│ ├── app/
│ │ ├── routes/
│ │ │ ├── canvas.tsx # Canvas workspace with voice aura
│ │ │ └── _layout.tsx # Root layout
│ │ ├── components/
│ │ │ ├── CanvasWorkspace.tsx # tldraw canvas, file management, context groups
│ │ │ ├── VoiceAura.tsx # Animated aura (connecting/listening/speaking/thinking)
│ │ │ ├── ToolsDrawer.tsx # Toggle 25+ tools
│ │ │ └── KnowledgeGraphDialog.tsx # Graph visualization overlay
│ │ └── hooks/
│ │ └── useGeminiLive.ts # WebSocket lifecycle, audio capture/playback, tool exec
│ └── package.json
├── gemini-live-ephemeral-tokens-websocket/ # Standalone Gemini Live client (vanilla JS)
│ ├── server.py # Token generation + MCP proxy
│ ├── frontend/ # Vanilla JS frontend
│ └── mcp_server.py # Composio MCP integration
├── test_*.py # Test suite
├── AGENTS.md # Full build brief and design doc
└── .env # Environment config (not committed)
| Layer | Technology |
|---|---|
| Frontend | React 19, TanStack Router/Start, Vite 8, Tailwind CSS 4, tldraw |
| Audio | Web Audio API, AudioWorklet (16kHz capture, 24kHz playback) |
| Visualization | GoJS (graph), tldraw (canvas), Lottie (animations) |
| Backend | Python, FastAPI, Uvicorn |
| AI/ML | Gemini Live API (gemini-3.1-flash-live-preview) via WebSocket |
| Memory | Cognee (graph + vector + relational retrieval) |
| Auth | Ephemeral token exchange (backend generates short-lived Google tokens) |
| Integrations | Notion, Slack, Gmail, Google Calendar, Google Drive (via Composio) |
The agent has access to 25+ tools across these categories:
- Cognee:
remember,batch_remember,cognify,recall,forget,update,delete - Notion:
search,create_page,append_to_page,get_page - Slack:
send_message,list_channels - Gmail:
fetch_emails,send_email - Calendar:
get_events,create_event,delete_event - Google Drive:
find_file,get_metadata,download_file,create_text_file,create_folder,fetch_to_canvas - Canvas:
list_files,group_files,add_text_file
- Python 3.10+
- Node.js 20+
- Cognee instance (local or remote)
- Google Gemini API key
- Composio Api key
cp .env.example .env
# Set these:
# BASE_URL, API_KEY, TENANT_ID, USER_ID — Cognee config
# GEMINI_API_KEY — Google Gemini
# COMPOSIO_API_KEYpython -m venv hoo
source hoo/bin/activate
pip install fastapi uvicorn requests python-dotenv
python server.py
# FastAPI running at http://localhost:8080cd canvas-whisper-sparkle
npm install
npm run dev
# TanStack Start app at http://localhost:3000python server.py
# Open http://localhost:8080 for GoJS graph viewpython cognee_realtime_graph.py
# Interactive CLI: add text, recall, forget, list dataKazake stores structured episodic memories, not raw video. Each memory event contains:
{
"event_type": "object_observed",
"object_label": "water bottle",
"speaker_identity": "Sai",
"relations": [
{"type": "owned_by", "target": "Sai"},
{"type": "gifted_by", "target": "Grandfather"},
{"type": "located_in", "target": "kitchen shelf"}
],
"frame_uri": "s3://bucket/frame_00123.jpg",
"timestamp": "2026-07-04T10:35:12Z",
"transcript_excerpt": "This water bottle was gifted by my grandfather.",
"confidence": 0.87
}- Event-driven, not frame-rate: Graph updates on semantic events, not every frame
- Speech + vision: Both modalities are required before creating durable memory
- Dedup on write: Fast recall check before creating new entities
- Confidence gating: Minimum threshold before persisting
- Observation → fact pipeline: Low-latency observation first, async enrichment later
- Evidence-backed: Frame snapshots stored in object storage, URIs in graph








