{"id":50509746,"url":"https://github.com/redis/redis-iris-demos","last_synced_at":"2026-06-02T19:01:23.557Z","repository":{"id":351632473,"uuid":"1192064758","full_name":"redis/redis-iris-demos","owner":"redis","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-01T21:28:23.000Z","size":8884,"stargazers_count":13,"open_issues_count":7,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T22:21:50.535Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/redis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-25T21:24:40.000Z","updated_at":"2026-06-01T21:28:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/redis/redis-iris-demos","commit_stats":null,"previous_names":["redis/context-engine-demos","redis/redis-iris-demos"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/redis/redis-iris-demos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redis%2Fredis-iris-demos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redis%2Fredis-iris-demos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redis%2Fredis-iris-demos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redis%2Fredis-iris-demos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redis","download_url":"https://codeload.github.com/redis/redis-iris-demos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redis%2Fredis-iris-demos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33833277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-02T19:01:21.368Z","updated_at":"2026-06-02T19:01:23.548Z","avatar_url":"https://github.com/redis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Redis Iris Demos\n\n**Reusable demo apps powered by Redis Iris**\n\nMulti-domain AI agent demos for [Redis Iris](https://redis.io/iris/): Redis's unified context engine for AI agents.\n\nEvery domain runs Context Retriever, Agent Memory, LangCache, and Semantic Routign.\n\u003c/div\u003e\n\n---\n## Iris Components in Demo\n\n| Solution | What it does |\n|--------|-------------|\n| **Semantic Routing** | Blocks off-topic queries before they reach the LLM |\n| **LangCache** | Returns cached responses for semantically similar questions |\n| **Agent Memory** | Enriches prompts with short-term session context + long-term user knowledge |\n| **Context Retriever** | Give agents clean, schema-first paths through all business data |\n\n## Domains\n\n| Domain | App | Industry | Screenshot |\n|--------|-----|----------|------------|\n| `reddash` | Redis Eats | Food delivery | \u003cimg src=\"docs/screenshots/Demo_Redis_Eats.png\" width=\"300\" /\u003e |\n| `electrohub` | ElectroHub | Electronics retail | \u003cimg src=\"docs/screenshots/Demo_ElectroHub.png\" width=\"300\" /\u003e |\n| `finance-researcher` | ShiftIQ | Financial research | \u003cimg src=\"docs/screenshots/Demo_ShiftIQ.png\" width=\"300\" /\u003e |\n| `healthcare` | RedHealthConnect | Healthcare | \u003cimg src=\"docs/screenshots/Demo_RedHealthConnect.png\" width=\"300\" /\u003e |\n| `radish-bank` | Radish Bank | Retail banking | \u003cimg src=\"docs/screenshots/Demo_Radish_Bank.png\" width=\"300\" /\u003e |\n\n## Legacy\n\nThe `legacy/context-engine-demos/` directory contains an archived copy of the original `redis/context-engine-demos` repository — the first-generation demo that showcased Context Retriever only. The current repo supersedes it with Semantic Routing, LangCache, Agent Memory, and domain-specific branding.\n\n\n## Getting Started\n\n### Prerequisites\n\n- Python 3.11+\n- Node.js 18+\n- [uv](https://docs.astral.sh/uv/) (Python package manager)\n\n### Redis Cloud services needed\n\n| Service | What you need |\n|---------|--------------|\n| Redis database | Host, port, password |\n| [Context Surfaces](https://redis.io/docs/latest/develop/ai/context-engine/context-retriever/) | Admin key |\n| [Agent Memory](https://redis.io/docs/latest/develop/ai/context-engine/agent-memory/) | Base URL, store ID, API key |\n| [LangCache](https://redis.io/docs/latest/develop/ai/context-engine/langcache/) | Host, cache ID, API key |\n| OpenAI | [API key](https://platform.openai.com/api-keys) |\n\n### First time\n\n```bash\nmake install                      # Install Python + JS dependencies\ncp .env.example .env              # Fill in credentials\nmake setup                        # Generate data, load Redis, seed memory + cache\nmake dev                          # Start at localhost:3040\n```\n\n### Coming back (same domain)\n\n```bash\nmake dev                          # Data persists in Redis\n```\n\nIf the agent has no tools (Redis was flushed, instance recycled), reload:\n\n```bash\nmake reset                        # Reload data + re-seed\nmake dev\n```\n\n### Switching domains\n\n\n```bash\n # Update the DEMO_DOMAIN in .env\nmake setup      \nmake dev\n```\n\n\n## What `make setup` does\n\n1. Sets `DEMO_DOMAIN` in `.env`\n2. Generates Context Surface models from the domain schema\n3. Generates synthetic data (JSONL files)\n4. Flushes Redis database\n5. Creates a new Context Surface (writes `CTX_SURFACE_ID` + `MCP_AGENT_KEY` to `.env`)\n6. Loads data into Redis (creates search indexes)\n7. Seeds Agent Memory (clears existing, seeds 2 long-term memories per domain)\n8. Seeds LangCache (flushes cache, seeds 1 cached response per domain)\n9. Semantic Routing initializes automatically when the server starts\n\n`make reset` does steps 4-9 only (faster — reuses existing models and data files).\n\n## Creating a New Domain\n\n```bash\nmake create-domain DOMAIN=my-industry\n```\n\nThis scaffolds the required files under `domains/my-industry/`. See the [domain-pack-authoring skill](.codex/skills/domain-pack-authoring/SKILL.md) for the full contract, checklist, and Iris-specific requirements (guardrail routes, seed memories, LangCache entries, landing page backgrounds).\n\nEach domain implements the `DomainPack` protocol defined in `backend/app/core/domain_contract.py`.\n\n## Project Structure\n\n```\nbackend/\n  app/\n    main.py                  # FastAPI app, SSE streaming, 7-phase pipeline\n    langgraph_agent.py       # LangGraph ReAct agent\n    memory_service.py        # Redis Agent Memory client\n    context_surface_service.py  # MCP tool wrapper\n    guardrail_service.py     # Semantic routing guardrail\n    langcache_service.py     # Semantic cache client\n    settings.py              # Pydantic BaseSettings\n    core/\n      domain_contract.py     # DomainPack protocol + configs\n      domain_schema.py       # EntitySpec definition\n\ndomains/\n  reddash/                   # Food delivery\n  electrohub/                # Electronics retail\n  finance-researcher/        # Financial research\n  healthcare/                # Patient portal\n  radish-bank/               # Retail banking\n\nfrontend/\n  src/\n    App.tsx                  # React chat UI, SSE handler\n    components/              # ConversationView, ActivityPanel, EmptyState\n\nscripts/                     # Setup, data loading, seeding, validation\n\n.codex/skills/\n  domain-pack-authoring/     # AI skill for creating new domains\n```\n\n## Make Targets\n\n| Target | What it does |\n|--------|-------------|\n| `make domains` | List available domains |\n| `make setup [DOMAIN=X]` | Full setup: models, data, Redis, seed |\n| `make reset` | Reload current domain into Redis + re-seed |\n| `make dev` | Start backend (:8040) + frontend (:3040) |\n| `make install` | Install Python + JS dependencies |\n| `make create-domain DOMAIN=X` | Scaffold a new domain |\n| `make seed-memories` | Re-seed long-term memories for current domain |\n| `make seed-langcache` | Re-seed LangCache entries for current domain |\n| `make flush-redis` | Wipe Redis database |\n\nAll targets read `DEMO_DOMAIN` from `.env` — no need to pass `DOMAIN=` unless switching.\n\n---\n\n## License\n\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredis%2Fredis-iris-demos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredis%2Fredis-iris-demos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredis%2Fredis-iris-demos/lists"}