Skip to main content

AI-Powered Team Orchestration Platform - Streamline product development and team collaboration with AI

Project description

InnoDay Platform

CI/CD Release Python License: AGPL v3 Code Style: Black

AI-powered development platform for managing tickets, boards, and repositories with Claude AI integration.

๐Ÿค– Claude Code MCP Integration

Add InnoDay directly to Claude Code โ€” create tickets, sync boards, and query work items without leaving your editor.

claude mcp add innoday -- uvx --from innoday mcp-server-innoday

Or find it in the MCP registry: io.github.havilandsoftware/mcp-server-innoday

Available MCP tools:

Tool What it does
get_all_work List tickets + GitHub issues across all boards and repos
sync_linear_board Trigger a sync for a specific Linear board
get_work_summary Summary stats โ€” open/closed counts, breakdown by platform

Environment variables (optional):

Variable Default Description
INNODAY_API_URL http://localhost:8002 URL of your running InnoDay instance
INNODAY_ORGANIZATION_ID (none) Default org ID โ€” can be passed per-tool call instead

Requires a running InnoDay instance. See Quick Start below.

๐Ÿ“œ Licensing

InnoDay is dual-licensed to protect against unauthorized monetization while keeping the project open source:

Open Source License (AGPL v3)

  • โœ… Free for open source projects
  • โœ… Modifications must be shared
  • โœ… Network use requires source disclosure
  • ๐Ÿ“– Read full AGPL v3 license

Commercial License

Why AGPL v3? It prevents others from offering InnoDay as a paid service without contributing back, while allowing us to fund development through commercial licenses.

๐Ÿš€ Quick Start

# Clone and install
git clone git@github.com:havilandsoftware/innoday.git
cd innoday
./install.sh

# Initialize platform (new terminal)
innoday platform init  # Interactive setup wizard

See Platform Setup Guide for detailed instructions.

Manual Setup

# 1. Dependencies & database
uv sync  # Installs all dependencies including psycopg2-binary for PostgreSQL

# 2. Database setup
# For PostgreSQL (Supabase):
DATABASE_URL="postgresql://user:pass@host:port/db" uv run alembic upgrade head

# For SQLite (development):
uv run alembic upgrade head

# 3. Start API server (port 8002)
uv run python -m src.main api --port 8002 --reload

# 4. Initialize platform
PYTHONPATH=. uv run python -m src.cli.main platform init

# 5. Configure CLI (optional)
PYTHONPATH=. uv run python -m src.cli.main config init

4. Configure GitHub Integration

# Set GitHub token (get from https://github.com/settings/tokens)
export GITHUB_TOKEN="your-github-token"

# Register a GitHub repository
curl -X POST "http://localhost:8002/api/v1/organizations/{org-id}/repositories" \
  -H "Content-Type: application/json" \
  -H "x-integration-token: ${GITHUB_TOKEN}" \
  -d '{
    "name": "repo-name",
    "url": "https://github.com/owner/repo",
    "platform": "github",
    "sync_issues": true
  }'

# Sync repository issues
curl -X POST "http://localhost:8002/api/v1/organizations/{org-id}/repositories/{repo-id}/sync" \
  -H "x-integration-token: ${GITHUB_TOKEN}"

5. Configure Jira Integration (Optional)

# Configure Jira credentials
PYTHONPATH=. uv run python -m src.cli.main config integrations
# Select "jira" and enter your Jira URL, email, and API token

# Register a Jira board
PYTHONPATH=. uv run python -m src.cli.main board register --type jira \
  "https://your-domain.atlassian.net/jira/software/boards/123" \
  "Your Board Name"

# Sync board tickets
PYTHONPATH=. uv run python -m src.cli.main board sync {board-id}

6. Configure Notion Integration (Optional)

# Configure Notion credentials
# 1. Create integration at https://www.notion.so/my-integrations
# 2. Copy integration token (starts with 'secret_')
# 3. Share your database with the integration

PYTHONPATH=. uv run python -m src.cli.main config integrations
# Select "notion" and enter your integration token

# Register a Notion database
PYTHONPATH=. uv run python -m src.cli.main board register --type notion \
  "https://www.notion.so/your-database-id" \
  "Your Database Name"

# Sync database pages as tickets
PYTHONPATH=. uv run python -m src.cli.main board sync {board-id}

๐ŸŽฏ Quick Usage Examples:

# Service management
innoday status             # Check all services
innoday start api          # Start just the API
innoday logs agent         # View agent logs

# Ticket management  
innoday tickets list       # List all tickets
innoday tickets create "Fix login bug"
innoday tickets update 123 --status IN_PROGRESS

# AI Agent interaction
innoday agent chat "Create tasks for auth system"
innoday agent interactive  # Interactive chat mode

# Repository management (NEW)
innoday git list           # List Git registrations
innoday git sync {id}      # Sync repository issues
innoday git repo {id}      # View repository info
innoday git issues {id}    # View repository issues

๐Ÿ—‘๏ธ Easy Uninstall

To uninstall InnoDay:

# If you have the repository cloned:
./uninstall.sh

# Or run these commands manually:
rm -rf ~/.innoday
rm -f ~/.local/bin/innoday

# Note: Remove PATH entry from your shell config (~/.bashrc, ~/.zshrc, or ~/.profile)
# Look for: export PATH="$HOME/.local/bin:$PATH"

๐Ÿ› ๏ธ Alternative Installation Methods

Development Setup (No Installation)
# Clone repository
git clone https://github.com/havilandsoftware/innoday.git
cd innoday

# Use the bin wrapper (no installation needed!)
./bin/innoday --version

# Configure environment (local Supabase)
cp env/.env.local.example .env.local
# Edit .env.local with your CLAUDE_API_KEY and GITHUB_TOKEN

# Start services
./bin/innoday start all
Docker Compose
git clone https://github.com/havilandsoftware/innoday.git
cd innoday
docker compose up -d

Service URLs:

  • REST API: http://localhost:8002 (Docs)
  • Agent API: http://localhost:9000
  • Web UI: http://localhost:7860

โœจ Features That Make InnoDay Special

๐Ÿค– AI-Powered Team Orchestration

  • Smart Update Collection: Automatically gather and summarize team progress with AI assistance
  • Intelligent Meeting Preparation: AI-driven SCRUM facilitation and meeting insights
  • Optimal Workload Distribution: Machine learning-based task assignment and team balancing
  • Context-Aware Information Routing: Connect people to the right information at the right time
  • Claude AI Integration: Advanced conversation analysis with recency weighting and temporal patterns

๐Ÿ“ Project-Based Organization (NEW)

  • Unified Project Structure: Organize work with goals, scope, and clear boundaries
  • Scope Document Management: Version-controlled requirements with iterative refinement workflow
  • Project Update Tracking: Capture clarifications, feedback, and Q&A during scoping
  • Repository Layer Classification: Categorize repos by architecture (UI, API, Data, AI, Legacy)
  • Primary Repository Designation: Identify the main codebase for each project
  • Integrated Board Management: One board per project for ticket tracking
  • Project Overview Dashboard: Complete visibility across all project components

๐Ÿ”— Unified Multi-Platform Integration

  • Single Source of Truth: Seamlessly manage Jira, Trello, Notion, Linear, and GitHub from one interface
  • Real-Time Synchronization: Automatic bi-directional sync with intelligent duplicate detection
  • Universal Ticket Model: Work with tickets from any platform using consistent APIs โ€” including the unified GET /work endpoint
  • Linear Integration: Full GraphQL sync for Linear teams, issues, workflow states, priorities, and parent relationships
  • Board Registration System: Secure, token-based integration without storing credentials

๐Ÿข Enterprise-Ready Architecture

  • Organization-Based Multi-Tenancy: Complete data isolation with flexible membership roles
  • Platform Organization Protection: Special administrative entity that cannot be modified or deleted
  • Smart License Management: Usage-based tiers with real-time tracking and enforcement
  • Role-Based Access Control: Granular permissions (MEMBER, ADMIN, OWNER, DEVELOPER, PLATFORM)

๐ŸŽฏ Developer Experience

  • Comprehensive CLI: Rich command-line interface with secure credential storage and beautiful output
  • Modern API Design: FastAPI with automatic documentation, type safety, and async support
  • Three Service Architecture: Separate API, Agent, and UI services for flexible deployment
  • Container Execution Support: Run AI workloads in isolated Docker environments

๐Ÿ—๏ธ API Architecture (v1)

  • 144 RESTful Endpoints: Organized across 17 specialized routers
  • Organization-Scoped Resources: All operations under /api/v1/organizations/{org_id}/
  • Consolidated Routers: Reduced from 20+ files to 17 well-organized modules
  • Unified AI Operations: All Claude/AI functionality under /api/v1/ai/
  • Complete Workflows: Project management, board sync, repository tracking, and container execution

๐Ÿ›ก๏ธ Security & Compliance

  • Token Pass-Through: Integration credentials never stored in database
  • Secure Credential Management: System keyring integration for sensitive data
  • Audit Trail: Complete history for synchronization, license changes, and executions
  • API Protection: Platform organization endpoints restricted to authorized users

Installable Command Line Interface

  • Service Management: Start, stop, restart, and monitor all InnoDay services
  • Rich Terminal Output: Beautiful tables, colors, and progress indicators
  • Interactive Agent: Real-time AI conversation with thread persistence
  • Secure Credentials: System keyring integration for API keys
  • Multiple Formats: Table, JSON, and CSV output options
  • Session Management: Persistent conversation threads and configuration

๐Ÿ“‹ Prerequisites

  • Python 3.11+ (Required for full functionality and type safety)
  • uv package manager (Install Guide)
  • Database: PostgreSQL (production) or SQLite (development)
    • PostgreSQL requires psycopg2-binary (automatically installed via uv sync)
  • Integration Accounts: Jira, Trello, GitHub, Claude AI, Slack (optional)

๐Ÿ“– Documentation

๐Ÿ› ๏ธ Installation & Setup

1. Environment Setup

# Install uv package manager
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"

# Clone repository
git clone https://github.com/havilandsoftware/innoday.git
cd innoday

# Setup virtual environment and dependencies
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv sync

2. Configuration

InnoDay uses per-environment .env files. The right file is selected by the ENVIRONMENT variable:

ENVIRONMENT File loaded Use case
local (default) .env.local Local Supabase (supabase start, port 54322)
dev .env.dev Shared Supabase cloud dev project
production .env Prod โ€” vars injected by platform (Render/Railway/etc.)
# Local development (against local Supabase)
cp env/.env.local.example .env.local
# Fill in your CLAUDE_API_KEY and GITHUB_TOKEN, then:
ENVIRONMENT=local uv run python -m src.main api --port 8002

# Development (against cloud Supabase dev project)
cp env/.env.dev.example .env.dev
# Fill in DATABASE_URL from Supabase dashboard โ†’ Settings โ†’ Database
ENVIRONMENT=dev uv run python -m src.main api --port 8002

# Run the environment setup validator (checks connectivity + required vars)
PYTHONPATH=. uv run python -m src.cli.main platform validate-env

# For integration testing
cp env/.env.test.example .env.test

Required variables (all environments):

Variable Where to get it
DATABASE_URL Local: postgresql://innoday:innoday_pass@localhost:54322/innoday ยท Cloud: Supabase dashboard โ†’ Settings โ†’ Database
CLAUDE_API_KEY Anthropic Console
GITHUB_TOKEN GitHub Settings โ†’ Tokens ยท Scopes: read:org, read:user, repo
GITHUB_ORG Your GitHub organization name (e.g. havilandsoftware)

Board credentials (Jira/Linear/Trello/Notion) belong to individual organizations and are provided at board-connect time via the API โ€” not in env files. See config/organizations.yaml for which board type each org uses.

3. Running Services

# Use CLI for service management (recommended)
uv run innoday start all             # Start all services
uv run innoday start api             # Start API only
uv run innoday status                # Check service status

# Or run services directly
uv run python -m src.main api --reload          # REST API with auto-reload
uv run python -m src.main agent --reload        # AI Agent API with auto-reload  
uv run python -m src.main ui                    # Web Interface
uv run python -m src.main agent --cli           # Interactive CLI Agent

4. CLI Usage

# Service Management
innoday start all                    # Start all services
innoday stop api                     # Stop specific service
innoday restart agent                # Restart service
innoday status                       # Check service status
innoday logs ui                      # View service logs

# Configuration
innoday config init                  # Interactive setup
innoday config show                  # View current config
innoday config set api-url http://localhost:8002

# Agent Interaction
innoday agent chat "Help me plan the sprint"    # Send message
innoday agent chat "Continue work" --refresh    # Fresh conversation
innoday agent interactive                       # Interactive mode
innoday agent interactive --refresh             # Interactive, fresh start

# Project Management
innoday project create "Customer Portal" --description "Q1 features"
innoday project add-repo https://github.com/org/frontend --layer ui
innoday project list                 # List all projects
innoday project overview             # Show project dashboard

# Scope Management (NEW)
innoday scope create PROJECT_ID "Build e-commerce platform"
innoday scope get PROJECT_ID         # View current scope
innoday scope update PROJECT_ID SCOPE_ID --estimated-hours 320
innoday scope add-update PROJECT_ID question "What payment methods?"
innoday scope list-updates PROJECT_ID --pending-only
innoday scope finalize PROJECT_ID SCOPE_ID
innoday scope update-status PROJECT_ID active "Scope approved"

# Ticket Management
innoday tickets list                 # List all tickets
innoday tickets create "New feature" # Create ticket
innoday sync trello-board BOARD_ID   # Sync from Trello

# Authentication & Credentials  
innoday auth login                   # Setup authentication
innoday --help                       # Show all commands

๐Ÿงช Development & Testing

Running Tests

# Full test suite
uv run python -m pytest tests/ -v

# Specific test categories
uv run python -m pytest tests/test_api* -v      # API tests
uv run python -m pytest tests/test_cli* -v      # CLI tests  
uv run python -m pytest tests/test_agent* -v    # Agent tests

# Coverage report
uv run python -m pytest tests/ --cov=src --cov-report=html

Code Quality

# Format code
uv run black src/ tests/
uv run isort src/ tests/

# Lint code
uv run flake8 src/ tests/
uv run bandit -r src/

# Type checking
uv run mypy src/

๐Ÿ—๏ธ Architecture

InnoDay follows a modular architecture with clear separation of concerns:

src/
โ”œโ”€โ”€ api/              # REST API & external integrations
โ”œโ”€โ”€ agent/            # AI agent with HuggingFace integration
โ”œโ”€โ”€ cli/              # Command-line interface
โ”œโ”€โ”€ domain/           # Core business models (User, Ticket, Organization, Project)
โ”œโ”€โ”€ middleware/       # RBAC, authentication, validation
โ”œโ”€โ”€ routers/          # FastAPI route handlers  
โ”œโ”€โ”€ services/         # Business logic layer (ProjectService, etc.)
โ”œโ”€โ”€ tools/            # AI-powered automation utilities
โ”œโ”€โ”€ ui/               # Gradio web interface
โ””โ”€โ”€ main.py          # Service dispatcher

Key Technologies:

  • FastAPI: Modern, fast web framework with automatic API docs
  • SQLModel: Type-safe ORM with Pydantic integration
  • HuggingFace: AI agent capabilities and model integration
  • Gradio: Interactive web interface for AI interactions
  • Rich: Beautiful terminal output and CLI experience

Platform Organization

InnoDay uses a special Platform Organization that serves as the system administrator:

  • Singleton Entity: Only one platform organization exists per InnoDay instance
  • Special Privileges: Members with PLATFORM role have cross-organization access
  • Protected Entity: Cannot be modified or deleted through standard API endpoints
  • System Configuration: Holds platform-wide settings and billing information
  • First-time Setup: Automatically created during innoday config init

The platform organization ensures proper system administration while maintaining security boundaries between client organizations. All system-level operations and platform management require PLATFORM role membership.

๐Ÿ”’ Security & Licensing

Role-Based Access Control

  • Admin Users: Full system access, user management, license control
  • Member Users: Standard ticket and project access
  • Developer Users: Repository and project management capabilities
  • Organization Isolation: Multi-tenant data separation and security

Licensing Tiers

  • Pro: 1 user, 1 project, 3 tickets/day, email support
  • Max: 5 users, 5 projects, unlimited tickets, priority support
  • Unlimited: No restrictions, priority support

Haviland Software Clients

  • Free License: Included with Haviland Software services
  • Full Access: Complete platform capabilities for employees

๐Ÿšข CI/CD & Deployment

The project includes comprehensive GitHub Actions workflows:

Release Process (fully automated):

Every merge to main automatically:

  1. Bumps the minor version in src/version.py
  2. Builds and publishes the package to PyPI
  3. Updates server.json version and publishes to the MCP registry
  4. Creates a GitHub release with changelog

Required GitHub secrets (set once):

  • PYPI_API_TOKEN โ€” PyPI API token for the innoday package
  • MCP_REGISTRY_TOKEN โ€” JWT from mcp-publisher login github (expires ~30 days; refresh by re-running login and updating the secret)

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Standards:

  • Python 3.11+ for type safety and performance
  • Black code formatting and isort imports
  • Comprehensive test coverage (pytest)
  • Type hints with mypy validation
  • Clear documentation and examples

๐Ÿ“ž Support

๐Ÿ“„ License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) - see the LICENSE file for details.


Built with โค๏ธ by Haviland Software

Haviland Software

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

innoday-0.75.0b0.tar.gz (404.0 kB view details)

Uploaded Source

Built Distribution

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

innoday-0.75.0b0-py3-none-any.whl (443.9 kB view details)

Uploaded Python 3

File details

Details for the file innoday-0.75.0b0.tar.gz.

File metadata

  • Download URL: innoday-0.75.0b0.tar.gz
  • Upload date:
  • Size: 404.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for innoday-0.75.0b0.tar.gz
Algorithm Hash digest
SHA256 32a0ce7ec1f4e8a0432293f394f326fde6a770eb4ddc1fe2f0a68744918803bd
MD5 e77e16360181ee4b93ca9e8a989e6a53
BLAKE2b-256 5035a1124adc5e4732ba4f24051c9f022c820d84aaaccc21e44b3f02c6ae80d3

See more details on using hashes here.

File details

Details for the file innoday-0.75.0b0-py3-none-any.whl.

File metadata

  • Download URL: innoday-0.75.0b0-py3-none-any.whl
  • Upload date:
  • Size: 443.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for innoday-0.75.0b0-py3-none-any.whl
Algorithm Hash digest
SHA256 d23a59524dd3e6e283cae8df6569b7ae06be133cb2e7ab6a0af701dbff5b5489
MD5 b51b59aebee3d579b4e5c841db32eb7f
BLAKE2b-256 093e873456eb556c3912f3beca3fa826f5a989725828b61d6d36edd1dc3f94a3

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