diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 320f35ac..5b97d913 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,27 +1,8 @@ -# Contributing to Flo AI +# Contributing to Wavefront -Thank you for your interest in contributing to Flo AI! We welcome contributions from the community and are excited to work with you. +Thank you for your interest in contributing to Wavefront! We welcome contributions from the community and are excited to work with you. -This guide will help you get started with contributing to the Flo AI project. Please read it carefully before making your first contribution. - -> **Note**: This contributing guide currently focuses on **Flo AI**, the core agent building and orchestration library. **Wavefront AI** (the enterprise middleware platform) is currently in development and will be open-sourced in the future. When Wavefront AI is released, we will update this guide with additional contribution guidelines for the middleware platform. - ---- - -## ๐Ÿ“‹ Table of Contents - -- [Code of Conduct](#code-of-conduct) -- [Getting Started](#getting-started) -- [Development Environment Setup](#development-environment-setup) -- [Project Structure](#project-structure) -- [Development Workflow](#development-workflow) -- [Code Style and Standards](#code-style-and-standards) -- [Testing Guidelines](#testing-guidelines) -- [Documentation Guidelines](#documentation-guidelines) -- [Commit Message Guidelines](#commit-message-guidelines) -- [Pull Request Process](#pull-request-process) -- [Types of Contributions](#types-of-contributions) -- [Questions and Support](#questions-and-support) +This guide will help you get started with contributing to the Wavefront project. Please read it carefully before making your first contribution. --- @@ -116,27 +97,11 @@ source .venv/bin/activate # On macOS/Linux ### Environment Variables -Set up your API keys for testing (create a `.env` file or export them): - -[Documentation to be added soon] - -### Verify Installation - -Test your installation: +Set up your API keys for testing (create a `.env` file or export them). Please find the documentation on environment variables [here](DOCKER_SETUP.md). -```bash -# Run the test suite -pytest tests/unit-tests/ - -# Run a specific test -pytest tests/unit-tests/test_agent_builder_tools.py -``` +## ๐Ÿ“ Setting up the project Locally -## ๐Ÿ“ Project Structure - -Understanding the project structure will help you navigate the codebase: - -[To be added] +For local development, you can use the following instructions in quick start mentioned [here](/wavefront/README.md#quick-start). --- @@ -232,91 +197,12 @@ git push origin feature/your-feature-name --- -## ๐Ÿ’ป Code Style and Standards - -### Python Code Style - -We use **pre-commit hooks** to ensure code quality. Set it up: - -```bash -# Install pre-commit -pip install pre-commit - -# Install hooks -pre-commit install - -# Run on all files (optional, but recommended) -pre-commit run --all-files -``` - -**Key style guidelines:** - -1. **Follow PEP 8** - Python style guide -2. **Type hints** - Use type hints for function signatures: - ```python - from typing import Optional, List - - async def process_data( - items: List[str], - limit: Optional[int] = None - ) -> dict: - ... - ``` -3. **Docstrings** - Use Google-style docstrings: - ```python - def my_function(param1: str, param2: int) -> bool: - """Brief description of the function. - - Args: - param1: Description of param1 - param2: Description of param2 - - Returns: - Description of return value - - Raises: - ValueError: When something goes wrong - """ - ``` -4. **Async/Await** - Use async/await for I/O operations -5. **Error Handling** - Use appropriate exception types and provide clear error messages - -## ๐Ÿงช Testing Guidelines - -### Writing Tests - -1. **Test Coverage** - Aim for high test coverage, especially for new features -2. **Test Organization**: - - Unit tests in `tests/unit-tests/` - - Integration tests in `tests/integration-tests/` - - Mark integration tests with `@pytest.mark.integration` - -3. **Test Naming**: - ```python - def test_function_name_with_condition_returns_expected(): - """Test that function_name returns expected when condition is met.""" - ``` - -4. **Async Tests**: - ```python - import pytest - - @pytest.mark.asyncio - async def test_async_function(): - result = await my_async_function() - assert result == expected - ``` - -5. **Fixtures** - Use pytest fixtures for common setup: - ```python - @pytest.fixture - def sample_agent(): - return AgentBuilder().with_name('test').build() - ``` - ### Running Tests ```bash +# Run all tests +cd wavefront + # Run all unit tests pytest tests/unit-tests/ @@ -345,32 +231,6 @@ pytest -m "not integration" --- -## ๐Ÿ“š Documentation Guidelines - -### Code Documentation - -- **Docstrings** - All public functions, classes, and methods should have docstrings -- **Type hints** - Use type hints for better IDE support and documentation -- **Comments** - Add comments for complex logic, but prefer self-documenting code - -### Documentation Updates - -When adding new features, update: - -1. **README.md** - If the feature is user-facing -2. **API Documentation** - If adding new APIs -3. **Examples** - Add examples in `flo_ai/examples/` if applicable -4. **Docstrings** - Update docstrings for any changed functions - -### Documentation Format - -- Use Markdown for documentation files -- Use MDX for the documentation site -- Include code examples where helpful -- Keep documentation up-to-date with code changes - ---- - ## ๐Ÿ“ Commit Message Guidelines We follow [Conventional Commits](https://www.conventionalcommits.org/) specification: @@ -572,18 +432,6 @@ Contributors will be recognized in: --- -## ๐Ÿ“„ License - -By contributing, you agree that your contributions will be licensed under the same license as the project (MIT License for Flo AI). - ---- - ## ๐Ÿ™ Thank You! -Thank you for taking the time to contribute to Flo AI! Your contributions help make this project better for everyone. - -**Happy Contributing! ๐Ÿš€** - ---- - -**Questions?** Feel free to open an issue or reach out to vishnu@rootflo.ai +Thank you for taking the time to contribute to Wavefront! Your contributions help make this project better for everyone. \ No newline at end of file diff --git a/README.md b/README.md index 4c4f5781..a0a8e78e 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,6 @@

-


GitHub @@ -30,6 +29,8 @@ Website โ€ข Documentation + โ€ข + Discord

@@ -42,33 +43,38 @@


-# ๐Ÿš€ Wavefront AI Middleware +## What is Wavefront ? + +Wavefront AI is an open-source middleware platform designed to: +- Seamlessly connect to any API, database or file storage system +- Connect to any LLM or SLM +- Build AI-driven agents, workflows, and automations across enterprise by connecting to multiple data sources, knowledge bases, and services +- Provide authentication, authorization, observability, monitoring & evaluation for all agents & workflows -Wavefront AI is an open-source middleware platform designed to seamlessly build AI-driven agents, workflows, and automations across enterprise environments. It acts as a connective layer that bridges frontend applications and AI automations with backend databases, data-warehouses, data-lakes, third-party services, ensuring secure access, observability, and compatibility with modern AI +## What people build with Wavefront ? +- To build AI agents & workflows to audit, underwrite, supervise contact center, and automate business processes +- To build knowledge bases & RAG ready applications for internal enterprise use +- To build voice & conversational agents collections and sales use-cases +- To build AI workflows to connect multiple data sources, knowledge bases, and services -**Status**: Beta Release -**Beta release**: Dec 2025 -**Wavefront License**: GNU AFFERO GENERAL PUBLIC LICENSE 3.0 -**FloAI License**: MIT LICENSE -**Contributing**: We welcome early feedback! See [CONTRIBUTING.md](CONTRIBUTING.md). -**Community**: Join our discord at https://discord.gg/BPXsNwfuRU

Rootflo

---- +| Project Information | Details | +|-----------|------------| +|**Release Status** | Beta Release| +|**Wavefront License** | GNU AFFERO GENERAL PUBLIC LICENSE 3.0 | +|**FloAI License** | MIT LICENSE | ## โœจ Key Capabilities -- **๐ŸŽฏ Modular AI Application Integration** - Deploy diverse AI agents for auditing, underwriting, contact center supervision, and business process automation without rebuilding infrastructure. - - **๐Ÿ”Œ Unified API Layer** - Standardized APIs for developing, deploying, and managing AI workflows across multiple use cases and frameworks. + Standardized APIs for developing, deploying, and managing AI workflows & agents across multiple use cases and frameworks. - **๐Ÿ” Enterprise-Grade Authentication & Authorization** - Native integrations with Google Auth, LDAP, Auth0, Okta, and Microsoft AD/Entra for seamless SSO and access controls. + Native integrations with Google Auth and Microsoft AD/Entra for seamless SSO and access controls for client applications - **๐ŸŒ Comprehensive Data Connectivity** Ingest data from OLAP/OLTP systems (BigQuery, Redshift), HDFS, cloud storage (S3, GCS), databases (PostgreSQL, MongoDB), and enterprise APIs (Salesforce, SAP). @@ -83,7 +89,7 @@ Wavefront AI is an open-source middleware platform designed to seamlessly build Built-in telemetry with Grafana and Prometheus support. Track agent performance, audit trails, and guardrail enforcement in real-time. - **๐Ÿค– No Code Agent & Workflow Builder** - Built-in capabilities to build and customer AI agents, and AI Workflows, connecting Data Sources, Knowledge Bases, in minutes + Built-in capabilities to build and customize AI agents, and AI Workflows, connecting Data Sources, Knowledge Bases, in minutes - **๐Ÿ”Š Voice & Conversational Agents** Integrated Voice-to-Voice Bots, ASR models, and agentic flows for contact center and conversational use cases. @@ -91,127 +97,42 @@ Wavefront AI is an open-source middleware platform designed to seamlessly build - **๐Ÿง  Knowledge Bases & RAG Ready** Native support for Retrieval-Augmented Generation with MCP connectors and external knowledge bases. ---- +- **๐ŸŽฏ Modular AI Application Integration (Coming Soon)** +Deploy diverse AI agents for auditing, underwriting, contact center supervision, and business process automation without rebuilding infrastructure. -## ๐Ÿ—๏ธ Architecture Overview +## Quick Start -

- Rootflo -

+**Option 1**: [Schedule a demo](https://calendly.com/meetings-rootflo/30min) and we help you build immediately. -### Layer Descriptions +**Option 2**: Self-host for maximum control and customization. Please find the self-hosting instructions in the [Wavefront Documentation](https://github.com/rootflo/wavefront/tree/develop/wavefront). -| Layer | Purpose | Components | -|-------|---------|------------| -| **Frontend Applications** | User-facing AI interfaces | Supervisors, Audit Agents, Underwriters, Copilots | -| **API Layer** | Standardized communication | Frontend SDK, REST/GraphQL APIs | -| **Authentication** | Identity verification & SSO | Google Auth, LDAP, Auth0, Okta, Microsoft AD | -| **Authorization (Agents)** | Agent-level access policies | Role definitions, permission mapping | -| **AI Workflows** | Intelligent automation | Agentic flows, Voice agents, LLM integrations, RAG | -| **Data Processing** | ETL and API management | Pipelines, transformations, HTTP endpoints | -| **Authorization (Data)** | Data source access control | Fine-grained permissions, audit logging | -| **Data Sources** | Enterprise data systems/Services | Databases, APIs, Cloud storage, Data warehouses, Servics like Salesforce, SAP etc. | ## Platform Components As part of the project, we are building the following components -- [FloAI](https://github.com/rootflo/flo-ai/tree/develop/flo_ai) library for Agent Building & A2A Orchestration -- **Wavefront Core** Middleware Service, which connects multiple frontend applications with complex backend ai pipelines, provides authentication, authorization, observability, monitoring & evaluation -- **Wavefront Control Panel** Unified frontend for configuring agents, workflows, AI models, Guardrails developer-friendly, RBAC etc. -- **Wavefront cli** for configuring through cli (Yet to Build), for full developer-friendly control - -## ๐Ÿ›ฃ๏ธ Current Support & Roadmap - -### Data Adapters - -| Adapter | Status | Notes | -|---------|--------|-------| -| BigQuery | โœ… Available | Full read/write support | -| Redshift | โœ… Available | Production-ready | -| PostgreSQL | ๐Ÿ”„ In Progress | Optimized for large datasets | -| MySQL | ๐Ÿ“‹ Roadmap | Compatible with MySQL 5.7+ | - -### API Adapters - -| Adapter | Status | Notes | -|---------|--------|-------| -| Custom API Configuration | ๐Ÿ”„ In Progress | Flexible HTTP endpoint support | -| Salesforce | ๐Ÿ”„ In Progress | Native API integration | - -### LLM Connectors - -| Model/Service | Status | Notes | -|---------------|--------|-------| -| OpenAI | โœ… Available | GPT-3.5, GPT-4 support | -| Anthropic | โœ… Available | Claude models supported | -| vLLM (Open-Source) | โœ… Available | Self-hosted inference | -| Ollama | โœ… Available | Local model deployment | -| GroqAI | ๐Ÿ”„ In Progress | Fast inference support | -| Vertex AI | โœ… Available | Google Cloud integration | -| Bedrock | ๐Ÿ”„ In Progress | AWS integration coming soon | - -### Authentication Providers - -| Provider | Status | Notes | -|----------|--------|-------| -| Google Auth | โœ… Available | OAuth 2.0 support | -| Microsoft AD/Entra | โœ… Available | Enterprise SSO ready | -| Okta | ๐Ÿ“‹ Roadmap | Q1 2026 | -| SAML 2.0 | ๐Ÿ“‹ Roadmap | Q1 2026 | +| Component | Description | +|---------|-------------| +| **flo-ai** | [FloAI](https://github.com/rootflo/flo-ai/tree/develop/flo_ai) library for Agent Building & A2A Orchestration. Detailed documentation is available [here](https://wavefront.rootflo.ai/flo-ai). | +| **wavefront-server** | Core Middleware Service, which connects everything and orchestrates the flows. Detailed documentation is available [here](https://github.com/rootflo/wavefront/tree/develop/wavefront). | +| **wavefront-client** | Unified frontend for configuring agents, workflows, AI models, Guardrails developer-friendly, RBAC etc. Details [here](https://github.com/rootflo/wavefront/tree/develop/wavefront). | +| **wavefront-cli** | for configuring through cli, for full developer-friendly control (**Coming Soon**) | -### Audit & Observability - -| Feature | Status | Notes | -|---------|--------|-------| -| Application Metrics | โœ… Available | Prometheus-compatible | -| Application Logs | โœ… Available | Structured logging | -| AI Token Tracking | โœ… Available | Token tracking per agent | -| Open Telemetry | โœ… Available | Full OTel support | -| AI Audit Logging | ๐Ÿ”„ In Progress | Detailed decision trails (Q4 2025) | -| AI Guardrails | ๐Ÿ“‹ Roadmap | Policy enforcement (Q1 2026) | - -### Frontend SDK - -| Feature | Status | Notes | -|---------|--------|-------| -| Component Library | โœ… Available | React components ready | -| AI-Based No-Code Builder | ๐Ÿ“‹ Roadmap | Visual agent creation (Q1 2026) | -| Low Code AI Agent Builder | โœ… Available | YAML-based builder available | - -### Release Timeline +## Release Timeline | Quarter | Milestone | Features | |---------|-----------|----------| | **Nov 2025** | Public README.md | Publish readme and take in community feedback | -| **Dec 2025** | Open-source community edition | Community edition release with working MVP | -| **Q1 2026** | Enterprise Edition | Advanced RBAC, More Data source Integrations| -| **Q1 2026** | Rootflo Wavefront Cloud | One-click deployable Wavefront Cloud +| **Dec 2025** | Open-source Beta Release | Beta with basic features | +| **Q1 2026** | GA Release | Advanced RBAC, More Data source Integrations| +| **Q1 2026** | Rootflo Wavefront Cloud | Multi-tenant Cloud offering | See [ROADMAP.md](ROADMAP.md) for detailed feature plans and contribution opportunities. ---- - -## ๐Ÿค Contributing - -We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions: - -1. Fork the repository -2. Create a feature branch (`git checkout -b feature/amazing-feature`) -3. Commit your changes (`git commit -m 'Add amazing feature'`) -4. Push to the branch (`git push origin feature/amazing-feature`) -5. Open a Pull Request - -See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines. - ---- - - -## ๐Ÿ™ Acknowledgments - -Wavefront AI was built with inspiration from leading open-source projects in the AI infrastructure space. Special thanks to our early adopters and community contributors. - ---- +> [!WARNING] +> +> - This project is under active development and APIs may change without notice. Please checkout the [platform docs](https://wavefront.rootflo.ai) for the latest information. +> - The platform is not in the GA state, and there are unimplemented feature. Checkout [ROADMAP.md](../ROADMAP.md) for the list of features, and whats missing. ## โญ Show Your Support @@ -224,10 +145,13 @@ If you find Wavefront AI useful, please consider: --- -**Ready to transform your enterprise AI infrastructure?** - -Get in touch for production-grade support and SLA-driven deployments that ensure uptime, stability, and performance at scale. +## Next Steps -๐Ÿ“ง sales@rootflo.ai +- [Join our Discord](https://discord.gg/BPXsNwfuRU) +- [Read our docs](https://wavefront.rootflo.ai/) +- [Submit an issue](https://github.com/rootflo/wavefront/issues/new/choose) +- [Talk to us](https://calendly.com/meetings-rootflo/30min) -**Join our discord at https://discord.gg/BPXsNwfuRU** \ No newline at end of file +Text us!
+[![Twitter Vishnu](https://img.shields.io/twitter/follow/viz_satiz?style=flat-square&logo=X)](https://x.com/viz_satiz) +[![Twitter Nitin](https://img.shields.io/twitter/follow/ntinkster?style=flat-square&logo=X)](https://x.com/ntinkster) diff --git a/ROADMAP.md b/ROADMAP.md index 5ffbb6d1..20f8173d 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -2,23 +2,7 @@ This roadmap provides a comprehensive overview of the direction Wavefront AI is heading. It covers all major components of the platform: the Flo AI library, Wavefront Core middleware, Control Panel, CLI, and ecosystem tools. -The roadmap is organized by component and priority, with clear timelines and status indicators. We welcome community feedback and contributions! - ---- - -## ๐Ÿ“‹ Table of Contents - -- [Release Timeline](#release-timeline) -- [Flo AI Library](#flo-ai-library) -- [Wavefront Core Middleware](#wavefront-core-middleware) -- [Wavefront Control Panel](#wavefront-control-panel) -- [Wavefront CLI](#wavefront-cli) -- [Data & Integration Layer](#data--integration-layer) -- [Developer Experience](#developer-experience) -- [Enterprise Features](#enterprise-features) -- [Observability & Monitoring](#observability--monitoring) - ---- +The roadmap is organized by component and priority. We welcome community feedback and contributions! ## ๐Ÿ—“๏ธ Release Timeline @@ -31,9 +15,22 @@ The roadmap is organized by component and priority, with clear timelines and sta --- +## ๐Ÿ“Š Beta Release Scope + +Current release has the following features implemented: + +| Feature | Limitation | +|---------|------------| +| **Datasource** | You can connect to multiple data sources. Current support is for Google Bigquery and AWS redshift. | +| **Agent** | You can create agents using the console and run them using the middleware. | +| **Workflow** | You can create workflows using the console and run them using the middleware. | +| **Voice Bots** | You can process voice calls using the middleware. But currently only outgoing calls are supported. Only supported telephony service is Twilio | +| **Inference App** | You can create inference pytorch models using the middleware, but the support is limited to certain pytorch models. This feature is fully `experimental`, and APIs are bound to change. | +| **API Service** | You can create API services to connect to any backend service. We have provided support for JSON and non JSON payload. Authenticate is limited to API Key, Basic Auth & Bearer Token. | + ## ๐Ÿค– Flo AI Library -The core agent building and orchestration framework. +The core agent building and orchestration framework. The following are that is going to be implemented in the coming releases ### Core Features @@ -70,7 +67,7 @@ The core agent building and orchestration framework. --- -## ๐Ÿ—๏ธ Wavefront Core Middleware +## ๐Ÿ—๏ธ Wavefront Core Middleware (a.k.a Floware) The core middleware service that provides APIs, authentication, authorization, and data connectivity. @@ -105,13 +102,11 @@ The core middleware service that provides APIs, authentication, authorization, a | **Agent-Level RBAC** | Fine-grained permissions for agent access and execution | High | Yet to start | v0.1.0 | | **Data Source RBAC** | Granular permissions for data source access | High | Yet to start | v0.1.0 | | **Role Management** | Create, update, and manage custom roles | High | โœ… Available | v0.1.0 | -| **Permission Inheritance** | Hierarchical permission inheritance | Medium | Yet to start | v0.2.0 | -| **Attribute-Based Access Control (ABAC)** | Advanced ABAC policies | Low | Yet to start | v0.3.0 | | **Audit Logging for Access** | Comprehensive audit logs for all access attempts | High | Yet to start | v0.1.0 | --- -## ๐ŸŽ›๏ธ Wavefront Control Panel +## ๐ŸŽ›๏ธ Wavefront Control Panel (a.k.a Flo Console) Unified frontend for configuring agents, workflows, AI models, guardrails, and RBAC. @@ -193,12 +188,11 @@ Command-line interface for configuring and managing Wavefront AI. | Adapter | Description | Priority | Status | Target Release | |---------|-------------|----------|--------|----------------| -| **Custom API Configuration** | Flexible HTTP endpoint support with custom authentication | High | ๐Ÿ”„ In Progress | v0.1.0 | +| **Custom API Configuration** | Flexible HTTP endpoint support with custom authentication | High | โœ… Available | v0.1.0 | | **Salesforce** | Native Salesforce API integration | High | ๐Ÿ”„ In Progress | v0.1.0 | | **SAP** | SAP ERP system integration | Medium | Yet to start | v0.2.0 | -| **ServiceNow** | ServiceNow API integration | Medium | Yet to start | v0.2.0 | | **Jira** | Jira API integration for project management | Low | Yet to start | v0.3.0 | -| **Slack** | Slack API integration for notifications and workflows | Medium | Yet to start | v0.2.0 | +| **Slack** | Slack API integration for notifications and workflows | Medium | โœ… Available | v0.2.0 | | **Microsoft 365** | Microsoft 365 API integration | Medium | Yet to start | v0.2.0 | | **GitHub/GitLab** | Version control system integrations | Low | Yet to start | v0.3.0 | @@ -224,8 +218,6 @@ Command-line interface for configuring and managing Wavefront AI. ## ๐ŸŽจ Developer Experience -### Flo AI Studio Enhancements - ### Developer Tools | Feature | Description | Priority | Status | Target Release | @@ -302,88 +294,8 @@ Command-line interface for configuring and managing Wavefront AI. --- -## ๐ŸŒ Community & Ecosystem - -### Documentation - -| Feature | Description | Priority | Status | Target Release | -|---------|-------------|----------|--------|----------------| -| **Getting Started Guide** | Comprehensive getting started documentation | High | ๐Ÿ”„ In Progress | v0.1.0 | -| **API Documentation** | Complete API reference documentation | High | Yet to start | v0.1.0 | -| **Tutorials** | Step-by-step tutorials for common use cases | High | Yet to start | v0.1.0 | -| **Architecture Documentation** | Detailed architecture and design documentation | Medium | Yet to start | v0.2.0 | -| **Best Practices Guide** | Best practices for building production agents | Medium | Yet to start | v0.2.0 | -| **Video Tutorials** | Video tutorials and demos | Low | Yet to start | v0.3.0 | - -### Examples & Templates - -| Feature | Description | Priority | Status | Target Release | -|---------|-------------|----------|--------|----------------| -| **Example Gallery** | Comprehensive collection of example agents and workflows | High | ๐Ÿ”„ In Progress | v0.1.0 | -| **Use Case Templates** | Pre-built templates for common use cases | High | Yet to start | v0.2.0 | -| **Integration Examples** | Examples for integrating with popular services | Medium | Yet to start | v0.2.0 | -| **Community Templates** | Platform for sharing community-created templates | Low | Yet to start | v0.3.0 | - -### Community Features - -| Feature | Description | Priority | Status | Target Release | -|---------|-------------|----------|--------|----------------| -| **Community Forum** | Discussion forum for community support | Medium | Yet to start | v0.2.0 | -| **Template Marketplace** | Marketplace for sharing and discovering templates | Low | Yet to start | v0.3.0 | -| **Contributor Guide** | Comprehensive guide for contributors | High | ๐Ÿ”„ In Progress | v0.1.0 | -| **Community Showcase** | Showcase of community-built solutions | Low | Yet to start | v0.3.0 | - ---- - -## โœ… Released Features - -### Flo AI Library - -| Feature | Description | Status | Version | -|---------|-------------|--------|---------| -| **Full Composability** | Teams can be combined with teams and agents with agents. Extended to team + agent composability | โœ… | v0.0.4 | -| **Error Handling** | Ability to handle errors autonomously | โœ… | v0.0.4 | -| **LLM Extensibility** | Ability to use different LLMs across different agents and teams | โœ… | v0.0.4 | -| **Async Tools** | Ability to create tools easily within asyncio | โœ… | v0.0.4 | -| **Observer Framework** | Observer framework for raising agent decision events and other important events | โœ… | v0.0.4 | -| **Test Framework** | Framework for unit-testing flo-ai and its internal functionalities | โœ… | v0.0.4 | -| **Linear Router** | Router that lets you build agents or teams that execute linearly or sequentially | โœ… | v0.0.3 | -| **Reflection Router** | Component that can make the AI retrospectively look at the current output and retry or work again on the task | โœ… | v0.0.3 | -| **Delegator Router** | Component that can help delegate a flo to a particular agent, by some condition | โœ… | v0.0.3 | -| **Logging Framework** | Better logging framework which can be extended to parent application (with log level control) | โœ… | v0.0.3 | -| **Output Formatter** | Ability to templatize output format using Pydantic | โœ… | v0.0.5 | -| **YAML-Based Agents** | Define agents and workflows using YAML configuration | โœ… | v1.0.0 | -| **LLM-Powered Routers** | Intelligent routing using Large Language Models | โœ… | v1.0.0 | -| **Plan-Execute Router** | Cursor-style plan-and-execute workflows | โœ… | v1.0.0 | -| **Document Processing** | Process PDF and TXT documents with AI agents | โœ… | v1.0.0 | -| **Variables System** | Dynamic variable resolution in agent prompts | โœ… | v1.0.0 | -| **Agent Builder Pattern** | Fluent interface for building agents | โœ… | v1.0.0 | -| **Arium Workflow Engine** | Multi-agent workflow orchestration engine | โœ… | v1.0.0 | -| **OpenTelemetry Integration** | Built-in observability with automatic instrumentation | โœ… | v1.0.0 | -| **Flo AI Studio** | Visual workflow designer with React-based UI | โœ… | v1.0.0 | - -### Platform Components - -| Feature | Description | Status | Version | -|---------|-------------|--------|---------| -| **Frontend SDK** | React component library for building AI applications | โœ… | v1.0.0 | -| **Low Code YAML Builder** | YAML-based agent and workflow builder | โœ… | v1.0.0 | - ---- - ## ๐Ÿ“ Notes -- **Status Legend**: - - โœ… Available - Feature is implemented and available - - ๐Ÿ”„ In Progress - Feature is currently being developed - - Yet to start - Feature is planned but not yet started - - ๐Ÿ“‹ Roadmap - Feature is on the roadmap with lower priority - -- **Priority Levels**: - - **High**: Critical for core functionality or major milestones - - **Medium**: Important but not blocking - - **Low**: Nice to have, can be deferred - - **Version Numbers**: Version numbers are estimates and subject to change based on priorities and community feedback. - **Community Contributions**: The community is welcome to suggest changes to the roadmap through pull requests. Community-suggested features will be evaluated and prioritized based on alignment with project goals. diff --git a/flo_ai/pyproject.toml b/flo_ai/pyproject.toml index db609896..8f6daf94 100644 --- a/flo_ai/pyproject.toml +++ b/flo_ai/pyproject.toml @@ -1,8 +1,8 @@ [project] name = "flo_ai" -version = "1.1.0-rc5" +version = "1.1.0-rc6" description = "A easy way to create structured AI agents" -authors = [{ name = "rootflo", email = "*@rootflo.ai" }] +authors = [{ name = "rootflo", email = "engineering.tools@rootflo.ai" }] requires-python = ">=3.10,<4.0" readme = "README.md" license = "MIT" diff --git a/flo_ai/setup.py b/flo_ai/setup.py index 91d27742..6e2e613e 100644 --- a/flo_ai/setup.py +++ b/flo_ai/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name='flo-ai', - version='1.0.7-rc5', + version='1.1.0-rc1', author='Rootflo', description='Create composable AI agents', long_description=long_description, diff --git a/flo_ai/uv.lock b/flo_ai/uv.lock index f3dc7384..076ab59e 100644 --- a/flo_ai/uv.lock +++ b/flo_ai/uv.lock @@ -897,7 +897,7 @@ wheels = [ [[package]] name = "flo-ai" -version = "1.1.0rc5" +version = "1.1.0rc6" source = { editable = "." } dependencies = [ { name = "aiohttp" }, diff --git a/images/wavefront-middleware.png b/images/wavefront-middleware.png new file mode 100644 index 00000000..eb60cac5 Binary files /dev/null and b/images/wavefront-middleware.png differ diff --git a/images/wavefront-service-mesh.png b/images/wavefront-service-mesh.png new file mode 100644 index 00000000..1ba952e9 Binary files /dev/null and b/images/wavefront-service-mesh.png differ diff --git a/wavefront/docker_setup.md b/wavefront/DOCKER_SETUP.md similarity index 51% rename from wavefront/docker_setup.md rename to wavefront/DOCKER_SETUP.md index a8aab192..ee12e92d 100644 --- a/wavefront/docker_setup.md +++ b/wavefront/DOCKER_SETUP.md @@ -2,6 +2,11 @@ This guide explains how to configure and run the RootFlo AI platform using Docker Compose. +> [!WARNING] +> +> - This project is under active development and APIs may change without notice. Please checkout the [platform docs](https://wavefront.rootflo.ai) for the latest information. +> - The platform is not in the GA state, and there are unimplemented feature. Checkout [ROADMAP.md](../ROADMAP.md) for the list of features, and whats missing. + ## Quick Start 1. **Generate JWT Keys** @@ -74,14 +79,14 @@ Some services require credential files (JSON files for GCP, OAuth, etc.). Follow | Service | Port | Description | |---------|------|-------------| -| **floware** | 8001 | Core AI middleware platform | -| **floconsole** | 8002 | Management console | -| **inference_app** | 8003 | Inference App | -| **call_processing** | 8004 | Voice call processing (Pipecat) | -| **postgres-floware** | 5432 | Floware database (pgvector) | +| **floware** | 8001 | Core AI middleware service | +| **floconsole** | 8002 | Management console service | +| **inference_app** | 8003 | Inference App service (Alpha) | +| **call_processing** | 8004 | Voice call processing service (Pipecat) | +| **postgres-floware** | 5432 | Floware database (with pgvector extension) | | **postgres-console** | 5433 | Console database | | **redis-floware** | 6379 | Floware cache | -| **redis-call-processing** | 6380 | Call processing cache | +| **redis-call-processing** | 6380 | Call processing service cache | ## Environment Variables Reference @@ -90,172 +95,216 @@ Some services require credential files (JSON files for GCP, OAuth, etc.). Follow #### Required Variables **Database**: -- `DB_USERNAME`: PostgreSQL username (default: `postgres`) -- `DB_PASSWORD`: PostgreSQL password (default: `postgres`) -- `DB_HOST`: Database host (default: `postgres-floware`) -- `DB_PORT`: Database port (default: `5432`) -- `DB_NAME`: Database name (default: `floware`) + +| Variable | Description | +|----------|-------------| +| `DB_USERNAME` | PostgreSQL username (default: `postgres`) | +| `DB_PASSWORD` | PostgreSQL password (default: `postgres`) | +| `DB_HOST` | Database host (default: `postgres-floware`) | +| `DB_PORT` | Database port (default: `5432`) | +| `DB_NAME` | Database name (default: `floware`) | **Redis**: -- `REDIS_PROTOCOL`: Protocol (default: `redis`) -- `REDIS_HOST`: Redis host (default: `redis-floware`) -- `REDIS_PORT`: Redis port (default: `6379`) + +| Variable | Description | +|----------|-------------| +| `REDIS_PROTOCOL` | Protocol (default: `redis`) | +| `REDIS_HOST` | Redis host (default: `redis-floware`) | +| `REDIS_PORT` | Redis port (default: `6379`) | **Application Settings**: -- `APP_ENV`: Application environment (e.g., `dev`, `staging`, `production`) -- `APP_NAME`: Application name (default: `floware`) -- `ALLOWED_ORIGINS`: Comma-separated list of allowed CORS origins -- `PASSTHROUGH_SECRET`: Secret for service-to-service authentication (**IMPORTANT**: Must be the same in floware, floconsole, and call_processing services) + +| Variable | Description | +|----------|-------------| +| `APP_ENV` | Application environment (e.g., `dev`, `staging`, `production`) | +| `APP_NAME` | Application name (default: `floware`) | +| `ALLOWED_ORIGINS` | Comma-separated list of allowed CORS origins | +| `PASSTHROUGH_SECRET` | Secret for service-to-service authentication (when `APP_ENV` is local, dev, staging)| + +**IMPORTANT**: `PASSTHROUGH_SECRET` must be the same in floware, floconsole, and call_processing services. This is used only in non-production environments (`APP_NAME` being local, dev, staging), for production, you should configure service mesh or API gateway to handle service-to-service authentication. **JWT Authentication**: -- `PRIVATE_KEY`: Base64-encoded RSA private key (generate using `./scripts/generate-keys.sh`) -- `PUBLIC_KEY`: Base64-encoded RSA public key (generate using `./scripts/generate-keys.sh`) -- `TOKEN_EXPIRY`: Token expiration in seconds (default: `3600`) -- `TEMPORARY_TOKEN_EXPIRY`: Temporary token expiration (default: `600`) -- `ENABLE_CLOUD_KMS`: Enable cloud KMS for key management (`true` or `false`) -- `CONSOLE_TOKEN_PREFIX`: Token prefix for console tokens (default: `fc_`) -- `FLOWARE_JWT_ISSUER`: JWT issuer URL for floware -- `FLOWARE_JWT_AUDIENCE`: JWT audience URL for floware -- `FLOWARE_JWT_VALIDATION_ISSUER`: Comma-separated list of valid issuers + +| Variable | Description | +|----------|-------------| +| `PRIVATE_KEY` | Base64-encoded RSA private key (generate using `./scripts/generate-keys.sh`) | +| `PUBLIC_KEY` | Base64-encoded RSA public key (generate using `./scripts/generate-keys.sh`) | +| `TOKEN_EXPIRY` | Token expiration in seconds (default: `3600`) | +| `TEMPORARY_TOKEN_EXPIRY` | Temporary token expiration (default: `600`) | +| `ENABLE_CLOUD_KMS` | Enable cloud KMS for key management (`true` or `false`) | +| `CONSOLE_TOKEN_PREFIX` | Token prefix for console tokens (default: `fc_`) | +| `FLOWARE_JWT_ISSUER` | JWT issuer URL for floware | +| `FLOWARE_JWT_AUDIENCE` | JWT audience URL for floware | +| `FLOWARE_JWT_VALIDATION_ISSUER` | Comma-separated list of valid issuers | **Initial User configuration**: -- `EMAIL`: User Email -- `PASSWORD`: User Password -- `FIRST_NAME`: User first name -- `LAST_NAME`: User last name + +| Variable | Description | +|----------|-------------| +| `EMAIL` | User Email | +| `PASSWORD` | User Password | +| `FIRST_NAME` | User first name | +| `LAST_NAME` | User last name | **Cloud Provider** (Choose one: `aws` or `gcp`): -- `CLOUD_PROVIDER`: Set to `aws` or `gcp` + +| Variable | Description | +|----------|-------------| +| `CLOUD_PROVIDER` | Set to `aws` or `gcp` | #### AWS Configuration (if CLOUD_PROVIDER=aws) -```yaml -AWS_ACCESS_KEY_ID: Your AWS access key -AWS_SECRET_ACCESS_KEY: Your AWS secret key -AWS_REGION: AWS region (e.g., ap-south-1) -AWS_KMS_ARN: KMS key ARN for encryption -AWS_QUEUE_URL: SQS queue URL - -# S3 Buckets -TRANSCRIPT_BUCKET_NAME: Bucket for audio transcripts -AUDIO_BUCKET_NAME: Bucket for audio files -AWS_GOLD_ASSET_BUCKET_NAME: Bucket for gold/insights assets -MODEL_STORAGE_BUCKET: Bucket for ML models -AGENT_YAML_BUCKET: Bucket for agent YAML configs -VOICE_AGENT_BUCKET: Bucket for voice agent configs -IMAGE_SEARCH_REFERENCE_IMAGES_BUCKET: Bucket for reference images -APPLICATION_BUCKET: Bucket for API service applications -``` +| Variable | Description | +|----------|-------------| +| `AWS_ACCESS_KEY_ID` | Your AWS access key | +| `AWS_SECRET_ACCESS_KEY` | Your AWS secret key | +| `AWS_REGION` | AWS region (e.g., ap-south-1) | +| `AWS_KMS_ARN` | KMS key ARN for encryption | +| `AWS_QUEUE_URL` | SQS queue URL | +| `TRANSCRIPT_BUCKET_NAME` | Bucket for audio transcripts | +| `AUDIO_BUCKET_NAME` | Bucket for audio files | +| `AWS_GOLD_ASSET_BUCKET_NAME` | Bucket for gold/insights assets | +| `MODEL_STORAGE_BUCKET` | Bucket for ML models | +| `AGENT_YAML_BUCKET` | Bucket for agent YAML configs | +| `VOICE_AGENT_BUCKET` | Bucket for voice agent configs | +| `IMAGE_SEARCH_REFERENCE_IMAGES_BUCKET` | Bucket for reference images | +| `APPLICATION_BUCKET` | Bucket for API service applications | #### GCP Configuration (if CLOUD_PROVIDER=gcp) -```yaml -GCP_PROJECT_ID: Your GCP project ID -GCP_LOCATION: GCP region (e.g., asia-south1) -GOOGLE_APPLICATION_CREDENTIALS: Path to service account JSON file -GCP_KMS_KEY_RING: KMS key ring name -GCP_KMS_CRYPTO_KEY: KMS crypto key name -GCP_KMS_CRYPTO_KEY_VERSION: KMS key version (usually 1) - -# GCS Buckets -GCP_ASSET_STORAGE_BUCKET: Bucket for assets -GCP_GOLD_TOPIC_ID: Gold/insights Pub/Sub topic -GCP_EMAIL_TOPIC_ID: Email processing Pub/Sub topic -WORKFLOW_WORKER_TOPIC: Workflow Pub/Sub topic -``` - -#### LLM/AI Configuration - -**OpenAI**: -- `OPENAI_API_KEY`: Your OpenAI API key -- `OPENAI_MODEL_NAME`: Model to use (default: `gpt-4o`) - -**Other APIs**: -- `GOOGLE_API_KEY`: Google API key +| Variable | Description | +|----------|-------------| +| `GCP_PROJECT_ID` | Your GCP project ID | +| `GCP_LOCATION` | GCP region (e.g., asia-south1) | +| `GOOGLE_APPLICATION_CREDENTIALS` | Path to service account JSON file | +| `GCP_KMS_KEY_RING` | KMS key ring name | +| `GCP_KMS_CRYPTO_KEY` | KMS crypto key name | +| `GCP_KMS_CRYPTO_KEY_VERSION` | KMS key version (usually 1) | +| `GCP_ASSET_STORAGE_BUCKET` | Bucket for assets | +| `WORKFLOW_WORKER_TOPIC` | Workflow Pub/Sub topic | +| `APPLICATION_BUCKET` | Bucket for API service applications | #### Optional Configurations **External Services**: -- `INFERENCE_SERVICE_URL`: URL for the inference service (default: `http://inference_app:8003`) -- `EMBEDDING_SERVICE_URL`: URL for the embedding service -- `CALL_PROCESSING_BASE_URL`: URL for call processing service (default: `http://call_processing:8004`) -- `HERMES_URL`: URL for Hermes service -**OAuth Integration**: -- Azure: `AZURE_CLIENT_ID`, `AZURE_TENANT_ID`, `AZURE_CLIENT_SECRET`, `AZURE_SCOPES`, `AZURE_REDIRECT_URI` +| Variable | Description | +|----------|-------------| +| `INFERENCE_SERVICE_URL` | URL for the inference service (default: `http://inference_app:8003`) | +| `EMBEDDING_SERVICE_URL` | URL for the embedding service | +| `CALL_PROCESSING_BASE_URL` | URL for call processing service (default: `http://call_processing:8004`) | +| `HERMES_URL` | URL for Hermes service | + + **Email Integration**: -- `EMAIL_PROVIDER`: `gmail` or `outlook` -- Gmail: `GMAIL_SERVICE_ACCOUNT_FILE`, `GMAIL_SENDER_EMAILID`, `GMAIL_DELEGATE_USER` -- Outlook: `OUTLOOK_CLIENT_ID`, `OUTLOOK_CLIENT_SECRET`, `OUTLOOK_TENANT_ID`, `OUTLOOK_SENDER_EMAILID` - -**Analytics**: -- Superset: `SUPERSET_URL`, `SUPERSET_USERNAME`, `SUPERSET_PASSWORD` -- BigQuery: `BQ_PROJECT_ID`, `BQ_DATASET_ID` -- Redshift: `REDSHIFT_DB`, `REDSHIFT_USERNAME`, `REDSHIFT_PASSWORD`, `REDSHIFT_HOST`, `REDSHIFT_PORT` - -**Security Settings**: -- `MAX_FAILED_ATTEMPTS`: Maximum failed login attempts before lockout (default: `3`) -- `LOCKOUT_DURATION_HOURS`: Hours to lock account after max failed attempts (default: `24`) -- `INACTIVE_DAYS_THRESHOLD`: Days of inactivity before account is disabled (default: `60`) - -**Feature Flags** (set to `true` or `false`): -- `AZURE_FLAG`: Enable Azure integration -- `AZURE_OPENAI_FLAG`: Enable Azure OpenAI -- `CELERY_FLAG`: Enable Celery for async tasks -- `EMAIL_SYNC_FLAG`: Enable email synchronization -- `GOOGLE_FLAG`: Enable Google integration -- `INACTIVE_ACCOUNT_DISABLE_FLAG`: Enable automatic account disabling for inactive users -- `SAML_FLAG`: Enable SAML authentication -- `SLACK_FLAG`: Enable Slack integration -- `SUPERSET_FLAG`: Enable Superset analytics -- `VECTOR_DB_FLAG`: Enable vector database features + +| Variable | Description | +|----------|-------------| +| `EMAIL_PROVIDER` | `gmail` or `outlook` | +| `GMAIL_SERVICE_ACCOUNT_FILE` | Gmail service account JSON file path | +| `GMAIL_SENDER_EMAILID` | Gmail sender email address | +| `GMAIL_DELEGATE_USER` | Gmail delegate user | +| `OUTLOOK_CLIENT_ID` | Outlook OAuth client ID | +| `OUTLOOK_CLIENT_SECRET` | Outlook OAuth client secret | +| `OUTLOOK_TENANT_ID` | Outlook OAuth tenant ID | +| `OUTLOOK_SENDER_EMAILID` | Outlook sender email address | + + + +**Auth Security Settings**: + +| Variable | Description | +|----------|-------------| +| `MAX_FAILED_ATTEMPTS` | Maximum failed login attempts before lockout (default: `3`) | +| `LOCKOUT_DURATION_HOURS` | Hours to lock account after max failed attempts (default: `24`) | +| `INACTIVE_DAYS_THRESHOLD` | Days of inactivity before account is disabled (default: `60`) | + + ### FloConsole Service #### Required Variables -- `ALLOWED_ORIGINS`: Allowed origins (http://wavefront:3000) -- `CONSOLE_DB_HOST`: Database host (default: `postgres-console`) -- `CONSOLE_DB_PORT`: Database port (default: `5432`) -- `CONSOLE_DB_USERNAME`: Database username (default: `postgres`) -- `CONSOLE_DB_PASSWORD`: Database password (default: `postgres`) -- `CONSOLE_DB_NAME`: Database name (default: `console`) -- `CONSOLE_EMAIL`: Admin email address -- `CONSOLE_PASSWORD`: Admin password -- `CONSOLE_FIRST_NAME`: Admin first name -- `CONSOLE_LAST_NAME`: Admin last name -- `CONSOLE_JWT_ISSUER`: JWT issuer URL for console -- `CONSOLE_JWT_AUDIENCE`: JWT audience URL for console -- `CONSOLE_TOKEN_PREFIX`: Token prefix for console tokens (default: `fc_`) -- `SUPER_ADMIN_EMAIL`: Super admin email (usually same as `CONSOLE_EMAIL`) -- `TOKEN_EXPIRY`: Token expiration in seconds (default: `3600`) -- `TEMPORARY_TOKEN_EXPIRY`: Temporary token expiration (default: `600`) -- `PRIVATE_KEY`: Base64-encoded RSA private key (can be different from floware) -- `PUBLIC_KEY`: Base64-encoded RSA public key (can be different from floware) -- `APP_ENV`: Application environment -- `ENABLE_CLOUD_KMS`: Enable cloud KMS for key management (`true` or `false`) -- `PASSTHROUGH_SECRET`: Secret for service-to-service authentication (**IMPORTANT**: Must be the same as floware and call_processing) -- `DEFAULT_APP_NAME`: Name for the default app created automatically (e.g., `floware-dev`) -- `DEFAULT_APP_PUBLIC_URL`: Public URL for the default app (e.g., `http://floware:8001`) -- `DEFAULT_APP_PRIVATE_URL`: Private URL for the default app (e.g., `http://floware:8001`) +| Variable | Description | +|----------|-------------| +| `ALLOWED_ORIGINS` | Allowed origins (http://wavefront:3000) | +| `CONSOLE_DB_HOST` | Database host (default: `postgres-console`) | +| `CONSOLE_DB_PORT` | Database port (default: `5432`) | +| `CONSOLE_DB_USERNAME` | Database username (default: `postgres`) | +| `CONSOLE_DB_PASSWORD` | Database password (default: `postgres`) | +| `CONSOLE_DB_NAME` | Database name (default: `console`) | +| `CONSOLE_EMAIL` | Admin email address | +| `CONSOLE_PASSWORD` | Admin password | +| `CONSOLE_FIRST_NAME` | Admin first name | +| `CONSOLE_LAST_NAME` | Admin last name | +| `CONSOLE_JWT_ISSUER` | JWT issuer URL for console | +| `CONSOLE_JWT_AUDIENCE` | JWT audience URL for console | +| `CONSOLE_TOKEN_PREFIX` | Token prefix for console tokens (default: `fc_`) | +| `SUPER_ADMIN_EMAIL` | Super admin email (usually same as `CONSOLE_EMAIL`) | +| `TOKEN_EXPIRY` | Token expiration in seconds (default: `3600`) | +| `TEMPORARY_TOKEN_EXPIRY` | Temporary token expiration (default: `600`) | +| `PRIVATE_KEY` | Base64-encoded RSA private key (can be different from floware) | +| `PUBLIC_KEY` | Base64-encoded RSA public key (can be different from floware) | +| `APP_ENV` | Application environment | +| `ENABLE_CLOUD_KMS` | Enable cloud KMS for key management (`true` or `false`) | +| `PASSTHROUGH_SECRET` | Secret for service-to-service authentication (**IMPORTANT**: Must be the same as floware and call_processing) | +| `DEFAULT_APP_NAME` | Name for the default app created automatically (e.g., `floware-dev`) | +| `DEFAULT_APP_PUBLIC_URL` | Public URL for the default app (e.g., `http://floware:8001`) | +| `DEFAULT_APP_PRIVATE_URL` | Private URL for the default app (e.g., `http://floware:8001`) | ### Call Processing Service #### Required Variables -- `REDIS_HOST`: Redis host (default: `redis-call-processing`) -- `REDIS_PORT`: Redis port (default: `6379`) -- `REDIS_DB`: Redis database number (default: `0`) -- `APP_ENV`: Application environment -- `APP_NAME`: Application name (default: `call_processing`) -- `APP_NAME_FLOWARE`: Floware app name reference (default: `floware`) -- `FLOWARE_BASE_URL`: Floware URL (default: `http://floware:8001`) -- `PASSTHROUGH_SECRET`: Secret for service-to-service authentication -- `TOKEN_EXPIRY`: Token expiration in seconds (default: `3600`) -- `TEMPORARY_TOKEN_EXPIRY`: Temporary token expiration (default: `600`) -- `CALL_PROCESSING_TOKEN_PREFIX`: Token prefix (default: `fc_`) -- `CALL_PROCESSING_JWT_ISSUER`: JWT issuer URL for call processing +| Variable | Description | +|----------|-------------| +| `REDIS_HOST` | Redis host (default: `redis-call-processing`) | +| `REDIS_PORT` | Redis port (default: `6379`) | +| `REDIS_DB` | Redis database number (default: `0`) | +| `APP_ENV` | Application environment | +| `APP_NAME` | Application name (default: `call_processing`) | +| `APP_NAME_FLOWARE` | Floware app name reference (default: `floware`) | +| `FLOWARE_BASE_URL` | Floware URL (default: `http://floware:8001`) | +| `PASSTHROUGH_SECRET` | Secret for service-to-service authentication | +| `TOKEN_EXPIRY` | Token expiration in seconds (default: `3600`) | +| `TEMPORARY_TOKEN_EXPIRY` | Temporary token expiration (default: `600`) | +| `CALL_PROCESSING_TOKEN_PREFIX` | Token prefix (default: `fc_`) | +| `CALL_PROCESSING_JWT_ISSUER` | JWT issuer URL for call processing | ### Inference App Service (Optional) @@ -263,18 +312,26 @@ Uncomment the `inference_app` service in `docker-compose.yml` to enable. #### Required Variables -- `APP_ENV`: Application environment -- `CLOUD_PROVIDER`: `aws` or `gcp` -- `MODEL_STORAGE_BUCKET`: Bucket for ML models +| Variable | Description | +|----------|-------------| +| `APP_ENV` | Application environment | +| `CLOUD_PROVIDER` | `aws` or `gcp` | +| `MODEL_STORAGE_BUCKET` | Bucket for ML models | **If AWS**: -- `AWS_ACCESS_KEY_ID`: AWS access key -- `AWS_SECRET_ACCESS_KEY`: AWS secret key -- `AWS_REGION`: AWS region (e.g., `ap-south-1`) + +| Variable | Description | +|----------|-------------| +| `AWS_ACCESS_KEY_ID` | AWS access key | +| `AWS_SECRET_ACCESS_KEY` | AWS secret key | +| `AWS_REGION` | AWS region (e.g., `ap-south-1`) | **If GCP**: -- `GCP_PROJECT_ID`: GCP project ID -- `GOOGLE_APPLICATION_CREDENTIALS`: Path to service account JSON file (default: `/app/credentials/gcp-service-account.json`) + +| Variable | Description | +|----------|-------------| +| `GCP_PROJECT_ID` | GCP project ID | +| `GOOGLE_APPLICATION_CREDENTIALS` | Path to service account JSON file (default: `/app/credentials/gcp-service-account.json`) | ## Cloud Provider Setup @@ -503,16 +560,6 @@ ports: Increase Docker memory limit in Docker Desktop settings (recommended: 8GB minimum). -## Security Best Practices - -1. **Never commit docker-compose.yml with real credentials** -2. **Use strong passwords** for database and admin accounts -3. **Rotate JWT keys** regularly -4. **Use environment-specific configurations** (don't use dev credentials in production) -5. **Enable KMS encryption** for production deployments (`ENABLE_CLOUD_KMS=true`) -6. **Use HTTPS** for production deployments (add reverse proxy like Nginx) -7. **Restrict network access** using Docker networks and firewall rules - ## Initial Setup After starting all services, you need to configure floconsole to connect to floware: diff --git a/wavefront/README.md b/wavefront/README.md index 22476f36..3e164ce0 100644 --- a/wavefront/README.md +++ b/wavefront/README.md @@ -1 +1,97 @@ -# To be updated \ No newline at end of file +

+ + Wavefront + +

+ +## Prerequisites + +The project has its backend services written in python and frontend in reactjs. It has the following dependencies: + +- Python >=3.11 +- Node.js >=22.12 +- uv >=0.7.15 +- pnpm >=10.13.1 + +## Wavefront Overview + +The platform consist of following components, which create a microservice mesh to provide scalable, secure, and reliable AI services. We have not used a fully microservice architecture as it is not necessary for our use case. + +The platform consists of following components: + +| Service | Port | Description | Release Status | +|---------|------|-------------|----------------| +| **floware** | 8001 | Core AI middleware service. This service connects wavefront to multiple backends, databases, AI models and more. This is the core control center of the platform. | Beta | +| **floconsole** | 8002 | Management console service, this module is multi-app control centre for configuriong multiple apps on the wavefront middleware. | Beta | +| **inference_app** | 8003 | Inference App service. A simple service for running pytorch models. We right now support all models which works on pytorch version 0.16.0. | Experimental | +| **call_processing** | 8004 | Voice call processing service (Pipecat) | Beta | + +#### Middleware High Level Architecture: + +

+ Wavefront +

+ +#### Console High Level Architecture: + +

+ Wavefront +

+ +The project is ready for production use only in Google Cloud Console and Amazon Web Services. +In the current state of the project, it requires following cloud services to run locally (We are working on removing this dependencies for local runs): + +- Google Cloud Storage or Amazon S3 +- Google Cloud Pub/Sub or AWS SQS + +## Quick Start + +> [!WARNING] +> +> - This project is under active development and APIs may change without notice. Please checkout the [platform docs](https://wavefront.rootflo.ai) for the latest information. +> - The platform is not in the GA state, and there are unimplemented feature. Checkout [ROADMAP.md](../ROADMAP.md) for the list of features, and whats missing. + +### Docker Setup + +You can use docker compose to setup the platform locally. Details on setting up using docker can be found in [DOCKER_SETUP.md](DOCKER_SETUP.md) + +### Dev/Local Setup + +**Step 1**: You can use the local setup to setup the platform locally. Start by cloning the repo and running the following commands: + +```bash +chmod +x install-dep-local.sh +./install-dep-local.sh +``` + +This will install all the dependencies required to run the platform locally. + +**Step 2**: Wavefront uses vscode (or its clone like cursor or anti-gravity) as the primary editor. We have provided a vscode workspace file to make it easier to work with the project. Open the workspace file in vscode and it will open the project in vscode. + +Once you open the vscode you will be seeing three workspaces: + +- `wavefront-root-dir`: This is the root directory of the project. With all the root-dir files +- `wavefront`: This is the backend & frontend service of the platform. +- `flo_ai`: The A2A orchestration library developed by RootFlo AI. + +**Step 3**: Go to `wavefront` workspace and open the server directory. In the directory go to `apps`, where you can find all the services mentioned in the table above. Open each of the setup `.env` files with environment variables as mentioned in the [DOCKER_SETUP.md](DOCKER_SETUP.md). + +**Step 4**: Run all the backend services services. Check the floware health at http://localhost:8001/floware/v1/health. + +**Step 5**: Go to `wavefront` workspace and open the client directory. Add the neccessary environment variables in the `.env` file. Run the following commands to start the frontend services: + +```bash +pnpm install +pnpm run dev +``` + +Now open http://localhost:5173 in your browser to see the frontend & login with the credentials set in environment variables. + +**Step 6**: Go to the console, add your first app by clicking on the `Add App` button. Use the details of the floware service you started on Step 4 + +## Next Steps + +Connect your datasources, and create your first agent & workflow or go ahead an try out the voice bot feature. + +- Checkout the platform docs here [https://wavefront.rootflo.ai](https://wavefront.rootflo.ai/). +- Incase you face any issues, dont hesitate to reach out to schedule a call with us [here](https://calendly.com/meetings-rootflo/30min) \ No newline at end of file