Skip to main content

Enterprise Multi-Tenant AI Companion Platform

Project description

Reflection

Enterprise Multi-Tenant AI Companion Platform

"From one, many. From chaos, order — at scale."

Reflection extends Familiar with enterprise multi-tenancy capabilities. All core AI functionality comes from Familiar; this package adds the enterprise layer.

Architecture

┌─────────────────────────────────────────────────────────────┐
│                    Reflection                           │
│                                                             │
│  ┌───────────────────────────────────────────────────────┐ │
│  │         Tenant Wrappers (~1,200 lines)                 │ │
│  │                                                        │ │
│  │  TenantAgent        Per-tenant agent instances         │ │
│  │  TenantMemory       Tenant-scoped memory               │ │
│  │  TenantToolRegistry Per-tenant tool permissions        │ │
│  │  TenantChannels     Multi-tenant Discord/Telegram      │ │
│  │                                                        │ │
│  │  ┌──────────────────────────────────────────────────┐ │ │
│  │  │         Familiar Core (~103,000 lines)            │ │ │
│  │  │                                                   │ │ │
│  │  │  Agent         Full agent loop                    │ │ │
│  │  │  Providers     Anthropic, OpenAI, Ollama          │ │ │
│  │  │  ToolRegistry  50+ built-in tools                 │ │ │
│  │  │  Memory        Episodic + semantic memory         │ │ │
│  │  │  Channels      Discord, Telegram, Teams, etc      │ │ │
│  │  │  Skills        Browser, calendar, email, etc      │ │ │
│  │  │  Guardrails    Safety + compliance                │ │ │
│  │  └──────────────────────────────────────────────────┘ │ │
│  └───────────────────────────────────────────────────────┘ │
│                                                             │
│  ┌───────────────────────────────────────────────────────┐ │
│  │              Enterprise Layer                          │ │
│  │                                                        │ │
│  │  PostgreSQL    Tenants, users, conversations, usage    │ │
│  │  Redis         Quotas, sessions, distributed cache     │ │
│  │  FastAPI       REST API + SSE streaming                │ │
│  │  JWT Auth      Access + refresh tokens, bcrypt         │ │
│  │  Quotas        Rate limiting, token budgets            │ │
│  │  Billing       Usage tracking, metering                │ │
│  └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

Quick Start

from reflection import get_tenant_agent, TenantToolRegistry
from uuid import uuid4

# Create a tenant
tenant_id = uuid4()

# Get an agent for this tenant
agent = get_tenant_agent(tenant_id, tenant_config={
    "agent_name": "Acme Assistant",
    "default_provider": "anthropic",
})

# Chat (automatically isolated to tenant)
response = agent.chat("Hello!", user_id="user123")
print(response)

# Per-tenant tool permissions
registry = TenantToolRegistry(tenant_id)
registry.enable_tool("web_search")
registry.disable_tool("shell_execute")

Features

Multi-Tenancy

  • Tenant Isolation: Each tenant has isolated agents, memory, and data
  • Per-Tenant Configuration: Custom models, providers, quotas per tenant
  • Shared Infrastructure: One deployment serves many tenants

Enterprise Components

  • PostgreSQL Persistence: Conversations, messages, usage stored durably
  • JWT Authentication: Secure API access with refresh tokens
  • Quota Management: Rate limits, token budgets, concurrent request limits
  • Usage Tracking: Detailed metering for billing

Tenant Wrappers

Wrapper Extends Purpose
TenantAgent familiar.Agent Per-tenant agent instances
TenantMemory familiar.Memory Tenant-scoped memory
TenantToolRegistry familiar.ToolRegistry Per-tenant tool permissions
TenantDiscordChannel familiar.DiscordChannel Multi-tenant Discord bots
TenantTelegramChannel familiar.TelegramChannel Multi-tenant Telegram bots

Installation

Quick Install (Recommended)

# 1. Download Reflection
curl -L https://github.com/familiar-ai/reflection/archive/refs/heads/main.zip -o reflection.zip
unzip reflection.zip
cd reflection

# 2. Run installer (GUI wizard)
pip install -e .
reflection install

# That's it! Browser will open to http://localhost:8000

The installer will:

  • ✅ Detect your hardware
  • ✅ Ask about your use case (Healthcare/Business/Privacy)
  • ✅ Install dependencies (Ollama for self-hosted, or configure API)
  • ✅ Set up databases
  • ✅ Launch Reflection

Total time: 5-10 minutes

Manual Installation

# Install Familiar (dependency)
pip install familiar-ai

# Install Reflection
pip install reflection

# Or from source
git clone https://github.com/familiar-ai/reflection
cd reflection
pip install -e .

Configuration

# Required
export DATABASE_URL="postgresql+asyncpg://user:pass@localhost/reflection"
export REDIS_URL="redis://localhost:6379"
export JWT_SECRET_KEY="your-secret-key"

# LLM Providers (at least one)
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."

# Optional
export ENVIRONMENT="production"
export DEBUG="false"

Running

Docker Compose (Recommended)

docker-compose up -d

Manual

# Initialize database
reflection db init
reflection db migrate

# Start server
reflection serve --host 0.0.0.0 --port 8000

API

Chat Completion

curl -X POST http://localhost:8000/api/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello!", "stream": false}'

Streaming

curl -X POST http://localhost:8000/api/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message": "Write a haiku", "stream": true}'

Project Structure

reflection/
├── reflection/
│   ├── __init__.py         # Main exports
│   ├── tenant_wrappers/    # Tenant isolation layer
│   │   ├── agent.py        # TenantAgent
│   │   ├── memory.py       # TenantMemory
│   │   ├── tools.py        # TenantToolRegistry
│   │   └── channels.py     # TenantDiscord/Telegram
│   ├── core/               # Enterprise core
│   │   ├── orchestrator.py # DB-backed agent loop
│   │   ├── memory.py       # Enterprise memory service
│   │   └── settings.py     # Configuration
│   ├── tenants/            # Tenant management
│   │   ├── context.py      # Request-scoped context
│   │   ├── quotas.py       # Rate limiting
│   │   └── models.py       # Tenant models
│   ├── data/               # Database layer
│   │   ├── models.py       # SQLAlchemy models
│   │   ├── repositories/   # Data access
│   │   └── postgres.py     # Connection management
│   └── gateway/            # API layer
│       ├── app.py          # FastAPI app
│       ├── auth.py         # JWT authentication
│       └── routes.py       # API endpoints
├── reflection_core/           # Shared primitives
│   ├── security/           # Trust, sanitization
│   └── exceptions/         # Error hierarchy
├── tests/                  # Test suite
├── alembic/                # Database migrations
└── docker-compose.yml      # Deployment config

Relationship to Familiar

Reflection is designed as a thin enterprise wrapper around Familiar:

  • Familiar: Core AI capabilities (agents, tools, memory, providers, channels)
  • Reflection: Multi-tenancy, persistence, billing, quotas

This separation means:

  • Familiar improvements flow through automatically
  • Enterprise features are clearly isolated
  • Testing is focused on tenant isolation, not AI capabilities
  • Development is faster (no wheel reinvention)

License

MIT License

Commercial licensing available. Contact: licensing@familiar.ai

Contributing

See CONTRIBUTING.md for guidelines.

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

reflection_agent-2.0.35.tar.gz (313.7 kB view details)

Uploaded Source

Built Distribution

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

reflection_agent-2.0.35-py3-none-any.whl (267.5 kB view details)

Uploaded Python 3

File details

Details for the file reflection_agent-2.0.35.tar.gz.

File metadata

  • Download URL: reflection_agent-2.0.35.tar.gz
  • Upload date:
  • Size: 313.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for reflection_agent-2.0.35.tar.gz
Algorithm Hash digest
SHA256 75c2c11a6f9f6f88d8c3f6bd9f4be84c232a48d02992ea7bcb7f36ba2708d598
MD5 b48317d72c8ca2fcb2ac185838022660
BLAKE2b-256 75514ad103ff671a609a4c844da34e86c4dde768149be2404160d6a9f9f6c880

See more details on using hashes here.

File details

Details for the file reflection_agent-2.0.35-py3-none-any.whl.

File metadata

File hashes

Hashes for reflection_agent-2.0.35-py3-none-any.whl
Algorithm Hash digest
SHA256 0dd6af34af6eb23f11639a7625e7f00d500d43eeb8c3baeea24e8d7c9dbd0ff8
MD5 d91c39862f1b875008afa5fabea95f17
BLAKE2b-256 25edb837fa0db909aca3d5de70a0c5277f7e376380756ecc0366057c1d88e850

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