Skip to main content

Enterprise Knowledge Integration Service

Project description

Conduit - Enterprise Knowledge Integration Service

Conduit is a Python-based integration framework designed to provide a unified, consistent interface for AI tools and applications to interact with enterprise knowledge and collaboration platforms. Currently in an experimental stage and evolving rapidly, Conduit focuses on Atlassian tools (Jira and Confluence) as its initial integration targets. Our vision extends beyond just issue tracking and content management - over time,we plan to integrate with a broad ecosystem of development tools (like GitHub, Notion, Trello), knowledge bases, and productivity platforms to create a comprehensive bridge between AI assistants and your team's tools.

Although Conduit is currently only accessible via the command line, we plan to eventually expose it via other interfaces (such as Anthropics's Model Context Protocol and/or a REST API) for programmatic access and integration with AI assistants and other applications.

Why Conduit?

Modern software development teams rely on an ever-growing array of specialized tools throughout their development lifecycle - from issue tracking and documentation to version control and CI/CD. While each tool excels at its specific purpose, the fragmentation between these tools creates significant friction:

  • Developers constantly context-switch between different tools and environments
  • Information is scattered across multiple platforms, making it hard to find and connect related content
  • Copy-pasting between tools is error-prone and time-consuming
  • AI assistants lack unified access to your team's knowledge and workflows
  • Integration efforts are often manual and don't scale well

Conduit aims to solve these challenges by:

  1. Unified Access: Creating a single, consistent interface to interact with all your development tools
  2. AI-First Design: Making your tools' data and functionality readily available to AI assistants
  3. Seamless Integration: Eliminating manual copying and context switching between tools
  4. Knowledge Connection: Linking related information across different platforms automatically
  5. Workflow Automation: Enabling automated workflows that span multiple tools

By bridging the gaps between your development tools and making them AI-accessible, Conduit helps teams stay focused on building great software rather than juggling tools.

Features

  • Jira Integration

    • Multi-site support with site aliases
    • Retrieve issues by key
    • Search issues using JQL
    • Create new issues
    • Update issue fields
    • Add comments to issues
    • Transition issue status
    • View remote links
  • Confluence Integration

    • Multi-site support with site aliases
    • List pages in a space with pagination
    • Get page content with formatting options
    • View child pages and hierarchies
    • Support for content cleaning and formatting
    • Rich text processing for AI consumption
  • Configuration & Usability

    • YAML-based configuration with multi-site support
    • Robust error handling
    • Detailed logging
    • Site alias management

Project Structure

conduit/
├── cli/                    # Command-line interface
│   ├── commands/          # Platform-specific commands
│   │   ├── confluence.py  # Confluence CLI commands
│   │   └── jira.py       # Jira CLI commands
│   └── main.py           # CLI entry point and command routing
├── config/                # Configuration management
│   ├── config.yaml       # Default configuration template
│   └── __init__.py       # Configuration initialization
├── core/                  # Core functionality
│   ├── config.py         # Configuration loading and validation
│   ├── exceptions.py     # Custom exception definitions
│   └── logger.py         # Logging configuration
└── platforms/            # Platform integrations
    ├── base.py          # Base classes for platforms
    ├── registry.py      # Platform registration system
    ├── confluence/      # Confluence integration
    │   ├── client.py    # Confluence API client
    │   ├── config.py    # Confluence configuration
    │   └── content.py   # Content processing utilities
    └── jira/            # Jira integration
        ├── client.py    # Jira API client
        └── config.py    # Jira configuration

tests/                    # Test suite
└── platforms/           # Platform integration tests
    └── jira/            # Jira-specific tests

manual_testing/          # Manual testing resources
├── confluence_commands.md  # Confluence CLI examples
└── jira_commands.md       # Jira CLI examples

The project follows a modular architecture designed for extensibility:

  • CLI Layer: Implements the command-line interface with platform-specific command modules
  • Configuration: Handles YAML-based configuration with multi-site support
  • Core: Provides shared utilities for configuration, logging, and error handling
  • Platforms: Contains platform-specific implementations with a common interface
    • Each platform is isolated in its own module
    • base.py defines the common interface
    • registry.py enables dynamic platform registration
    • Platform-specific clients handle API interactions

Installation

Requirements

  • Python 3.10 or higher (Python 3.12 is the latest supported version)
  • pip, pipx, or uv package installer

Using pipx (Recommended)

pipx provides isolated environments for Python applications, ensuring clean installation and easy updates.

macOS/Linux:

# Install pipx if not already installed
python -m pip install --user pipx
python -m pipx ensurepath

# Install conduit
pipx install conduit

Windows:

# Install pipx if not already installed
python -m pip install --user pipx
python -m pipx ensurepath

# Install conduit
pipx install conduit

Using uv (Alternative)

uv is a fast Python package installer and resolver.

macOS/Linux:

# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install conduit
uv pip install conduit

Windows:

# Install uv if not already installed
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# Install conduit
uv pip install conduit

Development Installation

For contributing or development:

# Clone the repository
git clone https://github.com/yourusername/conduit.git
cd conduit

# Create and activate virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install in development mode
pip install --upgrade pip  # Ensure latest pip
pip install -e .  # Install the package in editable mode

The development dependencies will be installed automatically. If you need to install them manually:

pip install pytest black isort mypy ruff

Note: Make sure you're in the root directory of the project where pyproject.toml is located when running the installation commands.

Configuration

Initialize the configuration file:

conduit --init

This will create a configuration file at:

  • Linux/macOS: ~/.config/conduit/config.yaml
  • Windows: %APPDATA%\conduit\config.yaml

Example configuration with multi-site support:

jira:
  # Default site configuration
  default-site-alias: site1
  # Additional site configurations
  sites:
    site1:
      url: "https://dev-domain.atlassian.net"
      email: "dev@example.com"
      api_token: "dev-api-token"
    site2:
      url: "https://staging-domain.atlassian.net"
      email: "staging@example.com"
      api_token: "staging-api-token"

confluence:
  # Default site configuration
  url: "https://your-domain.atlassian.net"
  email: "your-email@example.com"
  api_token: "your-api-token"
  # Additional site configurations
  sites:
    site1:
      url: "https://dev-domain.atlassian.net"
      email: "dev@example.com"
      api_token: "dev-api-token"
    site2:
      url: "https://staging-domain.atlassian.net"
      email: "staging@example.com"
      api_token: "staging-api-token"

To get your Atlassian API token:

  1. Log in to https://id.atlassian.com/manage-profile/security/api-tokens
  2. Click "Create API token"
  3. Copy the token and paste it in your config file

To view your configured sites:

# List all configured sites
conduit config list

# Filter by platform
conduit config list --platform jira
conduit config list --platform confluence

The command shows:

  • URLs and associated emails for each site
  • Default site configuration
  • Additional site configurations
  • API tokens are automatically masked for security

Configuration Management:

  • Initialize config: conduit --init
  • Delete config: conduit config clean
  • List configured sites: conduit config list [--platform jira|confluence]
  • Test connection: conduit connect jira

Global Options:

  • --verbose: Enable detailed logging for troubleshooting
  • --json: Output results in JSON format
  • --init: Initialize configuration file

Usage

Command Line Interface

Jira Commands

  1. Get an issue:
conduit jira issue get PROJ-123 [--site site1]
  1. Search issues:
conduit jira issue search "project = PROJ AND status = 'In Progress'" [--site site1]
  1. Create an issue:
conduit jira issue create --project PROJ --summary "New Issue" --description "Issue description" --type Task [--site site1]
  1. Update an issue:
conduit jira issue update PROJ-123 --summary "Updated Summary" [--site site1]
  1. Add a comment:
conduit jira issue comment PROJ-123 "Your comment text" [--site site1]
  1. Transition issue status:
conduit jira issue status PROJ-123 "In Progress" [--site site1]
  1. Get remote links:
conduit jira issue remote-links PROJ-123 [--site site1]

Confluence Commands

  1. List pages in a space (limited number):
conduit confluence pages list SPACE --limit 10 [--site site1]
  1. List all pages in a space (with pagination):
conduit confluence pages list-all SPACE --batch-size 100 [--site site1]
  1. View child pages of a parent page:
conduit confluence pages children PAGE-ID [--site site1]
  1. Get space content in clean format:
conduit confluence pages content SPACE --format clean [--site site1]
  1. Get space content in storage format:
conduit confluence pages content SPACE --format storage [--site site1]
  1. Get a specific page by title:
conduit confluence pages get SPACE "Page Title" --format clean [--site site1]

Python API

from conduit.platforms.jira import JiraClient
from conduit.platforms.confluence import ConfluenceClient

# Initialize Jira client with optional site alias
jira = JiraClient(site_alias="site1")  # or JiraClient() for default site
jira.connect()

# Get an issue
issue = jira.get("PROJ-123")

# Search issues
issues = jira.search("project = PROJ AND status = 'In Progress'")

# Initialize Confluence client with optional site alias
confluence = ConfluenceClient(site_alias="site1")  # or ConfluenceClient() for default site
confluence.connect()

# Get pages from a space
pages = confluence.get_pages_by_space("SPACE", limit=10)

# Get all pages with pagination
all_pages = confluence.get_all_pages_by_space("SPACE", batch_size=100)

# Get child pages
child_pages = confluence.get_child_pages("PAGE-ID")

# Get a specific page by title
page = confluence.get_page_by_title(
    "SPACE",
    "Page Title",
    expand="version,body.storage"  # optional
)

# Get space content in raw format
content = confluence.get_space_content(
    "SPACE",
    depth="all",
    limit=500,
    expand="body.storage",
    format="storage"  # default
)

# Get space content in cleaned format (for AI/LLM)
content = confluence.get_space_content(
    "SPACE",
    depth="all",
    limit=500,
    expand="body.storage",
    format="clean"
)

The cleaned content format (format="clean") provides:

  • Preserved document structure
  • Markdown-style formatting
  • Cleaned HTML/XML markup
  • Proper handling of:
    • Headers and sections
    • Lists and tables
    • Links and references
    • Code blocks
    • Task lists
    • Special Confluence elements

AI Assistant Integration

Conduit is designed to enhance AI coding assistants by providing them access to your organization's knowledge base. For detailed instructions on integrating Conduit with your preferred AI assistant, visit our AI Assistant Integration Guide.

Key integration capabilities:

  • Semantic search across Jira and Confluence content
  • Rich context retrieval for AI prompts
  • Multi-site support for complex organizations
  • Clean, AI-friendly content formatting

Development

  1. Install development dependencies:
pip install -e ".[dev]"
  1. Run tests:
pytest
  1. Format code:
black .
isort .
  1. Run type checking:
mypy .

Future Enhancements

  • REST API for programmatic access
  • Additional platform integrations:
    • Notion
    • Trello
    • GitHub
    • Google Docs
  • Enhanced authentication & security
  • Batch operations
  • Additional output formats

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

conduit_connect-0.1.1.tar.gz (23.7 kB view details)

Uploaded Source

Built Distribution

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

conduit_connect-0.1.1-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

Details for the file conduit_connect-0.1.1.tar.gz.

File metadata

  • Download URL: conduit_connect-0.1.1.tar.gz
  • Upload date:
  • Size: 23.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.0

File hashes

Hashes for conduit_connect-0.1.1.tar.gz
Algorithm Hash digest
SHA256 69fccd337d8294777d6a2fa496129a67b025fe2cfd866d94d0d07f7904c671a9
MD5 88930dc555cb6c45b66495eba0e8d8fa
BLAKE2b-256 def79048611a912dd6139342b166232702847cdb63d2fa61cd4c9589289e9d68

See more details on using hashes here.

File details

Details for the file conduit_connect-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for conduit_connect-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b9ad5e609e11d367d1cd1294014d4341017a7cec76bb81357fb8b739b67de640
MD5 76e6f6f5fd910da27e59910b0a34648d
BLAKE2b-256 95a8779cc892b6632195692eb2c8cd9916b311ed835206460849331c7a4d674e

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