Download:

Integration Guide

Connect FlowSquad to Jira, Confluence, GitHub, GitLab, Bitbucket, Gitea, Azure DevOps, LDAP/AD, SAML 2.0 (any IdP), and OAuth2 providers. For a full Keycloak reference walkthrough, see the Reference Guide.

1. Integration Overview

FlowSquad integrates with your existing toolchain to eliminate context-switching and keep all your artefacts in sync. Integrations are configured in two places:

Supported Integrations

IntegrationCategoryWhat It Enables
JiraProject ManagementImport tickets as requirements; push Epics, Stories, Tasks, and Design cards back to Jira
ConfluenceDocumentationImport pages as source documents; publish design documents to Confluence spaces
GitHub (Cloud + Enterprise)Source ControlClone and analyse private repositories for codebase insights
GitLab (Cloud + Self-hosted)Source ControlClone and analyse repositories using personal access tokens or OAuth
Bitbucket Cloud (bitbucket.org)Source ControlClone repositories using username and App Password via the Bitbucket v2.0 API
Bitbucket Server / Data CenterSource ControlClone repositories on self-hosted Atlassian Bitbucket via the v1.0 REST API
Azure DevOpsSource ControlClone repositories using Personal Access Token (PAT) via the Azure DevOps REST API
Gitea / Forgejo (Self-hosted)Source ControlClone repositories from Gitea or Forgejo instances using token-based authentication
LDAP / Active DirectoryIdentityAuthenticate enterprise users; auto-assign FlowSquad roles from AD groups
SAML 2.0SSOSingle Sign-On with any SAML 2.0 compliant identity provider
OAuth2SSOSocial or enterprise login via GitHub, Google, Microsoft, Okta, and custom OAuth2 providers

2. Jira Integration

Setup

  1. Go to Admin Panel -> Settings -> Jira (or Setup Wizard Step 6)
  2. Enter your Jira URL (e.g. https://yourcompany.atlassian.net)
  3. Enter your Jira account email and an API token (generate at id.atlassian.com -> API tokens)
  4. Click Test Connection to verify -- a green status confirms success
  5. Click Save
ℹ️
Jira Cloud vs. Jira Server

Jira Cloud uses email + API token authentication. Jira Server (self-hosted) uses username + password. Select the correct type in the Jira settings.

Using Jira in FlowSquad

Smart Import

In the Analyze or Refine tab, click "Import from Jira". You can:

FlowSquad maps the Jira summary and description into a structured requirement ready for refinement.

Push Artefacts to Jira

Every Epic, Story, Task, and Design card has a "Push to Jira" button. Click it to create a corresponding Jira issue. The card then displays the created Jira issue key for easy cross-reference.

Bulk Export

Select multiple artefacts using the bulk action bar and choose "Export to Jira" to push them all in one operation.

💡
Tip

You can push individual artefacts to Jira one at a time using the per-card button -- a full bulk export is not required.


3. Confluence Integration

Setup

  1. Go to Admin Panel -> Settings -> Confluence
  2. Enter the full Confluence base URL -- include the /wiki path for Confluence Cloud:
https://yourcompany.atlassian.net/wiki
  1. Enter your Confluence account email and API token
  2. Click Save first, then click Test Connection
⚠️
Save Before Testing

You must click Save before clicking Test Connection. If you test without saving, the Confluence URL may show as blank in the Analyze tab even if testing appeared to succeed.

Using Confluence in FlowSquad

Import Documents from Confluence

In the Analyze tab, under "Load Documents", enter a Confluence page URL. FlowSquad fetches the page content and makes it available as a knowledge source for AskProduct and requirement generation.

Push Design Documents to Confluence

In the Design tab, open a design card and click "Push to Confluence". FlowSquad publishes the formatted design document to your Confluence space, creating or updating the page automatically.


4. Source Control Integration

FlowSquad automatically detects your Git provider from the repository URL you supply. Six providers are supported out of the box. All use HTTPS with token-based authentication -- SSH is not required.

ProviderURL PatternAuth TypeToken / Credential Required
GitHub Cloudgithub.com/...PAT (classic or fine-grained)Scope: repo (private repos) or public_repo (public)
GitHub Enterprisegithub.yourcompany.com/...PATSame scopes as GitHub Cloud; enterprise host auto-detected
GitLab Cloudgitlab.com/...PATScope: read_repository
GitLab Self-hostedgitlab.yourcompany.com/...PATScope: read_repository
Bitbucket Cloudbitbucket.org/...App PasswordPermission: Repositories > Read (generate at bitbucket.org -> Personal Settings -> App passwords)
Bitbucket Server / DCbitbucket.yourcompany.com/...HTTP Basic / PATUsername + password or project-scoped token
Azure DevOpsdev.azure.com/org/...PATScope: Code > Read (generate in Azure DevOps -> User Settings -> Personal access tokens)
Gitea / Forgejogitea.yourcompany.com/...API TokenGenerate in Gitea -> Settings -> Applications -> Access tokens

Setup

  1. Go to Admin Panel -> Settings -> Source Control (or Setup Wizard Step 5)
  2. Enter the Git base URL (e.g. https://github.com or https://bitbucket.org)
  3. Enter your username and the appropriate token or App Password for your provider (see table above)
  4. Enter the Project / Repository key in the format required by your provider (see below)
  5. Click Test Connection to validate access and load available branches, then click Save

Project Key Format by Provider

ProviderProject Key FormatExample
GitHubowner/repoacme-corp/backend-api
GitLabgroup/project or numeric project IDacme/backend-api
Bitbucket Cloudworkspace/repo-slugacme-workspace/backend-api
Bitbucket ServerPROJECT/repo-slug (PROJECT is uppercase key)BACKEND/api-service
Azure DevOpsproject/repoMyProject/backend-api
Gitea / Forgejoowner/repoacme/backend-api

Using Source Control in FlowSquad

In the Analyze tab, click "Add Codebase" and enter the full Git repository URL. FlowSquad detects the provider automatically and uses the stored credentials to clone and analyse the codebase. The analysis results power Quality Score, AskProduct, and Security Scan.

ⓘ
Bitbucket Cloud: App Password, not Account Password

Bitbucket Cloud does not accept your account password over HTTPS. You must generate an App Password at bitbucket.org → Personal Settings → App passwords with the Repositories: Read permission.

ⓘ
GitHub Organisation SSO

If your organisation enforces SAML SSO, you must also authorise the personal access token for that organisation via github.com/settings/tokens → Configure SSO.

ⓘ
Gitea / Forgejo Token Auth

FlowSquad passes the token as both an HTTP Basic password and a Bearer token header, so both classic Gitea and newer Forgejo instances are supported without any additional configuration.


5. LDAP / Active Directory

Setup

  1. Go to Setup Wizard Step 4 → LDAP / Active Directory
  2. Fill in the following fields:
FieldExample ValueNotes
LDAP Server URLldap://ad.company.com:389Use ldaps:// on port 636 for secure connections
Bind DNCN=svc-flowsquad,OU=Users,DC=company,DC=comService account used to search the directory
Bind Password(service account password)Stored encrypted in the config database
User Search BaseOU=Users,DC=company,DC=comUse DC=company,DC=com to search the entire domain
User Object ClasspersonTypically person or user
Username AttributesAMAccountNameUse uid for OpenLDAP
Email AttributemailUsed to populate the user's email in FlowSquad
Group Search BaseOU=Groups,DC=company,DC=comRequired for group-to-role mapping
Group Member AttributememberOfAttribute on the user object listing group memberships

Group-to-Role Mapping

Map Active Directory or LDAP groups to FlowSquad roles. Assignments are re-evaluated on every login.

Manual role assignments made in the Admin Panel take precedence over group-based assignments.

Testing the Connection

Click Test Connection in the LDAP settings. FlowSquad validates the bind credentials and fetches a sample user from the directory. A successful test shows the user's attributes, confirming that attribute mapping is correct.


6. SAML 2.0 SSO -- Overview

How It Works

FlowSquad implements SP-initiated SAML 2.0 SSO:

  1. User clicks "Login with SAML" on the FlowSquad login page
  2. FlowSquad (the Service Provider) redirects the user to the configured Identity Provider (IdP)
  3. The user authenticates at the IdP
  4. The IdP sends a signed SAML assertion back to FlowSquad's ACS (Assertion Consumer Service) URL
  5. FlowSquad validates the assertion and creates a session -- the user lands on the Dashboard

Supported Identity Providers

Any SAML 2.0 compliant IdP is supported, including: Keycloak, Okta, Azure AD, OneLogin, ADFS, Google Workspace, Ping Identity, and custom implementations.

Configuration Location

SAML is configured in Setup Wizard Step 4 → Authentication → SAML.

Required Configuration Fields

FieldWhere to Find It
IdP SSO URLIdP metadata -- the SingleSignOnService Location value
IdP Entity IDIdP metadata -- the entityID attribute
IdP CertificateIdP admin console -- X.509 signing certificate in PEM format
SP Entity IDAuto-filled: https://yourflowsquad.com:5000/saml/metadata
SP ACS URLAuto-filled: https://yourflowsquad.com:5000/saml/callback
Attribute MappingMap IdP attribute names to: username, email, firstName, lastName

Optional Features


7. OAuth2 Providers

FlowSquad supports OAuth2 login for: GitHub, Google, Microsoft (Azure AD), Okta, Keycloak, and custom OAuth2 providers.

General Setup

  1. Create an OAuth app in the provider's developer console (see provider-specific steps below)
  2. Set the redirect / callback URI to:
https://yourflowsquad.com/oauth2/<provider>/callback

# Examples:
https://flowsquad.yourcompany.com/oauth2/github/callback
https://flowsquad.yourcompany.com/oauth2/google/callback
https://flowsquad.yourcompany.com/oauth2/microsoft/callback
https://flowsquad.yourcompany.com/oauth2/okta/callback
https://flowsquad.yourcompany.com/oauth2/keycloak/callback
https://flowsquad.yourcompany.com/oauth2/custom/callback
  1. Copy the Client ID and Client Secret
  2. Enter them in Setup Wizard Step 4 → OAuth2 → [Provider] → Test → Save

GitHub

  1. github.com -> Settings -> Developer settings -> OAuth Apps -> New OAuth App
  2. Application Name: FlowSquad
  3. Homepage URL: https://flowsquad.yourcompany.com
  4. Authorization callback URL: https://flowsquad.yourcompany.com/oauth2/github/callback
  5. Click "Register application" -> copy Client ID and generate a Client Secret

Google

  1. console.cloud.google.com -> APIs & Services -> Credentials -> Create Credentials -> OAuth 2.0 Client ID
  2. Application type: Web application
  3. Authorised redirect URI: https://flowsquad.yourcompany.com/oauth2/google/callback
  4. Copy Client ID and Client Secret

Microsoft (Azure AD)

  1. portal.azure.com -> Azure Active Directory -> App registrations -> New registration
  2. Redirect URI (Web): https://flowsquad.yourcompany.com/oauth2/microsoft/callback
  3. After registering: Certificates & secrets -> New client secret -> copy the value
  4. Copy the Application (client) ID from the Overview page
  5. Grant admin consent: App registrations -> FlowSquad -> API permissions -> "Grant admin consent for [Tenant]"

Okta

  1. Okta Admin -> Applications -> Create App Integration -> OIDC / OAuth2 -> Web Application
  2. Sign-in redirect URI: https://flowsquad.yourcompany.com/oauth2/okta/callback
  3. Copy Client ID and Client Secret -> enter in FlowSquad -> OAuth2 -> Okta section

Keycloak (OAuth2 / OIDC)

  1. Keycloak Admin -> select your realm -> Clients -> Create client
  2. Client type: OpenID Connect, Client ID: flowsquad-oauth2
  3. Enable Client authentication (Confidential access type)
  4. Under Valid redirect URIs, add: https://flowsquad.yourcompany.com/oauth2/keycloak/callback
  5. Go to Credentials tab -> copy the Client Secret
  6. Enter in FlowSquad -> OAuth2 -> Keycloak section:
    • Keycloak Server URL: https://keycloak.yourcompany.com
    • Realm: master (or your custom realm name)
    • Client ID: flowsquad-oauth2
    • Client Secret: (copied from Credentials tab)
ⓘ
Full Keycloak Reference

For a complete step-by-step Keycloak configuration covering SAML, OAuth2, and LDAP together, see the Reference Guide — Keycloak Configuration.

Custom OAuth2 Provider

FlowSquad supports any standards-compliant OAuth2 / OIDC provider. Configure in Setup Wizard Step 4 → OAuth2 → Custom Provider:

FieldDescriptionWhere to Find It
Provider NameDisplay name shown on the login buttonChoose any label (e.g. "Acme SSO")
Authorization URLThe OAuth2 authorization endpointProvider's developer docs or /.well-known/openid-configuration
Token URLEndpoint to exchange the code for a tokenProvider's developer docs
User Info URLEndpoint to fetch the authenticated user's profileProvider's developer docs
Client IDApplication ID from the provider's consoleProvider's OAuth app settings
Client SecretSecret key for the applicationProvider's OAuth app settings
ScopesSpace-separated OAuth2 scopes to requestTypically openid email profile
Callback URLRegister this in the provider consolehttps://yourflowsquad.com/oauth2/custom/callback

8. Webhook Configuration

ⓘ
Coming Soon

Outbound webhook configuration is planned for an upcoming release. When available, it will be accessible from Admin Panel → Settings → Webhooks. This section will be updated with full setup instructions when the feature ships.

Planned Events

The following events are planned for the initial webhook release:

EventTriggered When
artifact_generatedAn AI-generated artefact (design, test case, etc.) is produced
artifact_saved_to_dbAn artefact is saved to the product database
jira_pushedAn artefact is pushed to Jira
quality_scan_completeA Quality Score analysis finishes
security_scan_completeA Security Scan analysis finishes

10. Session Backend — Redis Opt-In

By default FlowSquad stores user sessions in its built-in SQLAlchemy config database (flowsquad_engine.db). This works out of the box on every deployment type with no extra software and survives server restarts. Most deployments never need to change this.

If you already run Redis in your infrastructure, or simply prefer sessions stored outside the application database, you can switch to Redis by installing Redis on your system and setting one environment variable.

When to Consider Redis

ScenarioRecommended Backend
Standard single-node deploymentSQLAlchemy (default) — no action needed
You already run Redis in your infrastructureRedis — reuse your existing server
You prefer sessions stored outside the application databaseRedis
Air-gapped / no external services allowedSQLAlchemy (default)

Step 1 — Install Redis on your system

Redis is a separate open-source service. Install it on the same host as FlowSquad, or point to any reachable Redis server on your network:

PlatformHow to install
Ubuntu / Debian sudo apt-get install -y redis-server && sudo systemctl enable --now redis
RHEL / Rocky / Alma Linux sudo dnf install -y redis && sudo systemctl enable --now redis
Windows Download and run the Windows Redis installer (community port), or run Redis inside WSL2 using the Ubuntu command above
Docker sidecar docker run -d --name redis -p 6379:6379 --restart unless-stopped redis:7-alpine
Existing Redis server No installation needed — use its hostname and port in Step 2

Step 2 — Set the SESSION_REDIS_URL environment variable

Set this variable on the machine where FlowSquad runs, before starting or restarting it:

SESSION_REDIS_URL=redis://<host>:<port>/<db-index>
ScenarioValue
Redis on the same machine, no passwordredis://localhost:6379/0
Redis on a separate serverredis://192.168.1.50:6379/0
Redis with a passwordredis://:yourpassword@localhost:6379/0
Redis with TLS (Redis 6+)rediss://localhost:6380/0  (note the double s)

Windows installer — System Environment Variables

Open Start → System Properties → Advanced → Environment Variables and add a new System variable, or run this in PowerShell as Administrator:

[System.Environment]::SetEnvironmentVariable('SESSION_REDIS_URL', 'redis://localhost:6379/0', 'Machine')

Linux installer / portable package

# Add to /etc/flowsquad/flowsquad.env (loaded automatically by the FlowSquad service)
SESSION_REDIS_URL=redis://localhost:6379/0

Docker

# docker run
docker run -e SESSION_REDIS_URL=redis://redis:6379/0 ... flowsquad

# docker-compose.yml
services:
  flowsquad:
    environment:
      - SESSION_REDIS_URL=redis://redis:6379/0
  redis:
    image: redis:7-alpine
    restart: unless-stopped

Step 3 — Restart FlowSquad

Restart the FlowSquad service normally. On startup the log confirms the active backend:

INFO  Session backend = redis (localhost:6379/0)

That is all. FlowSquad detects the variable automatically and switches to Redis. No reinstall, no rebuild, no other files to change.

ⓘ
Safe fallback. If Redis is unreachable at startup, FlowSquad logs a warning and continues with SQLAlchemy. It will never fail to start because of a Redis issue.

Reverting to SQLAlchemy

Remove or unset SESSION_REDIS_URL and restart FlowSquad. No data migration needed. Users currently logged in will need to log in again (their session no longer exists in the new backend).

ⓘ
Legacy filesystem sessions. Setting SESSION_TYPE=filesystem forces the old file-based backend. This is not recommended — session files accumulate on disk without bound and cannot be shared across multiple FlowSquad nodes.

11. Troubleshooting Integrations

SymptomCauseResolution
Confluence URL not saving / shows blank in Analyze tab Settings were not saved before testing Re-enter the Confluence URL and click Save before clicking Test Connection
Jira API returns 401 Unauthorized API token is incorrect or has expired Generate a new Jira API token and update it in Admin Panel -> Settings -> Jira; verify you are using your email address, not a username
GitHub "Repository not found" for a private repo Personal access token does not have repo scope Edit the token at github.com/settings/tokens → enable repo scope → update in FlowSquad
SAML "Invalid SAML Response" SP certificate not uploaded to the IdP, or ACS URL mismatch Upload the SP certificate to your IdP; verify the ACS URL matches exactly including port
LDAP "Invalid Credentials" Bind DN format is incorrect or the service account password has expired Verify the Bind DN is in full DN format: CN=svc-account,DC=company,DC=com; reset the service account password if expired
OAuth2 "redirect_uri_mismatch" The callback URL registered in the OAuth app does not match FlowSquad's Update the OAuth app's redirect URI to exactly match: https://yourflowsquad.com/oauth2/<provider>/callback
Bitbucket Cloud "401 Unauthorized" Account password used instead of App Password Go to bitbucket.org → Personal Settings → App passwords, create a new App Password with Repositories: Read, and use that as the password in FlowSquad
Gitea repository not found Token lacks repository read permission or wrong project key format Verify the token at Gitea → Settings → Applications and confirm the project key is in owner/repo format
Azure DevOps "TF401019: Repository not found" PAT scope is too narrow or the repository name is incorrect Re-generate the PAT with Code → Read scope; use format project/repo for the project key