Osika is an AI chat platform currently in Proof of Concept (PoC) phase with a working GraphQL API and authentication system. Core chat functionality is implemented with plans for future plugin extensibility.
π Authentication & Security
Multiple authentication providers including Google, GitHub, Microsoft, SAML, LDAP, and email/password. Role-based access control with secure session management.
π¬ Real-time Communication
Real-time messaging with streaming AI responses. Built-in support for conversation history and message persistence.
π§© Plugin Architecture (Planned)
Extensible plugin system planned for future releases. API foundations exist but plugin execution and sandboxing are not yet implemented.
π GraphQL API
Type-safe GraphQL API with comprehensive schema for users, conversations, and messaging. Built with Pothos for runtime type safety.
π Enterprise Ready
Multi-user architecture with authentication, session management, and database-backed persistence. Additional enterprise features in development.
- Node.js 24+ (required) and pnpm (package manager)
- Podman or Docker (for local PostgreSQL and Redis containers)
git clone https://github.com/your-org/osika.git
cd osika
pnpm install-
Copy environment configuration:
cp .env.example .env
-
Generate required secrets:
# Automatically generate and set SESSION_KEY and JWT_SECRET pnpm setup:secrets -
Configure authentication providers (optional):
- Uncomment and configure any OAuth providers you want to use
- See Authentication Setup for detailed provider configuration
Option 1: Automated Setup (Recommended)
# Start PostgreSQL and Redis containers in background
pnpm dev:env:bg
# Wait for services to be ready, then setup database
pnpm db # Validates schema, formats, and generates Prisma client
pnpm db:push # Syncs database schema (for development)
pnpm db:seed # Creates sample users and AI model configurationsOption 2: Manual Container Management
# Start containers in foreground (press Ctrl+C to stop)
pnpm dev:env
# In another terminal, setup database:
pnpm db
pnpm db:push
pnpm db:seedContainer Management Commands:
pnpm dev:env:bg # Start in background
pnpm dev:env:stop # Stop containers
pnpm dev:env:restart # Restart containers
pnpm dev:env:status # Check container status# Start the development server
pnpm devAvailable Services:
- API: http://localhost:3000
- GraphQL Playground: http://localhost:3000/graphql
- Web App: http://localhost:5173 (when web app is running)
Test your setup:
# Run type checking
pnpm typecheck
# Run linting
pnpm lint
# Run tests
pnpm test
# Run all quality checks
pnpm quality# Common database operations
pnpm db # Validate, format, and generate Prisma client
pnpm db:push # Sync database schema (development)
pnpm db:seed # Create sample users and AI model configurations
pnpm db:studio # Open Prisma Studio visual editor
pnpm db:reset # Reset database (drops all data)Osika uses a monorepo structure with pnpm workspaces:
apps/api/- Fastify GraphQL API serverapps/web/- Web application frontendpackages/shared-types/- Shared TypeScript typesapps/api/src/domains/- Domain-driven business logic modulesdocs/- Technical documentation
The system follows Domain-Driven Design principles with separate modules for authentication, messaging, and users.
Core Documentation
- Documentation Hub - Complete guides and API reference
- Authentication Setup - Configure authentication providers
Development
- Architecture Documentation - System design and patterns
- API Reference - GraphQL schema and endpoints
This project is licensed under AGPL-3.0.
Internal business use is 100% allowed under AGPL without any code sharing requirements. This includes sharing access with your vendors, contractors, and business partners. You only need to share source code if you're offering this as a service to external customers.