> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lumos.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Choosing a Connection Strategy

This page helps you pick the right way to connect a system to Lumos. Setup steps live on each method's own page, linked below.

## Work down this list

Check the options in this order:

**1. Check the Integration Library.** If Lumos has a dedicated connector for your app, use it. Dedicated connectors are built and maintained by Lumos, and give you the most capabilities with the least setup. Search for your app in the **Integration Library** in the sidebar.

**2. Match a generic connector.** If your system uses a standard protocol or exposes its data in a standard way, one of the generic connectors will fit. Use the table below to match your system to a method.

**3. Build with the Connector SDK.** If your system has an API but no connector fits, you can build one with the [Connector SDK](/integrations/connector-sdk/introduction). This takes development work, but gives you the same lifecycle management as a dedicated connector.

**4. Fall back to Manual Tasks.** If the system has no API, no database access, and no export, Lumos can still govern it. [Manual Tasks](/docs/manual-tasks) route provisioning work to a person and track it to completion, so the system stays in your governance and audit trail.

## Matching a generic connector

| Method | Your system has... | What you get | Runs from |
| - | - | - | - |
| [SCIM](/integrations/generics/scim/connecting-scim-apps-with-lumos) | Support for SCIM 2.0 | Sync and provisioning | Lumos cloud |
| [Directory (AD and LDAP)](/integrations/generics/directory-ad/connecting-directories-with-lumos) | An AD domain controller or an LDAP server | Sync and provisioning | On-premise agent |
| [Database](/integrations/generics/databases/connecting-databases-with-lumos) | A JDBC-compatible database | Sync, plus provisioning if you configure write queries | On-premise agent, or Lumos cloud for internet-reachable databases |
| [Flatfile (CSV)](/integrations/generics/flatfile/connecting-flat-files-with-lumos) | A file export, and nothing else | Sync | Lumos cloud upload, or agent file watcher |
| [Universal REST](/integrations/generics/universal-rest/connecting-rest-applications-with-lumos) | A REST API for user management | Sync, plus provisioning | Lumos cloud |
| [Manual Tasks](/docs/manual-tasks) | A person who can make the change | Provisioning through tracked manual steps | Lumos cloud |

**Where connectors run.** Lumos must be able to reach the system. Anything not reachable from the internet, such as a domain controller or an internal database, connects through the [On-Premise Agent](/integrations/on-premise-agent/on-premise-agent-1) installed in your network. The "Runs from" column tells you when you need it.

<Tip>
  Many integrations can run in a read-only mode with fewer permissions. Each connector page lists what read-only needs and what you give up.
</Tip>

## Examples

**A SaaS app, like Salesforce.** Search the Integration Library. A dedicated [Salesforce](/integrations/library/salesforce) connector exists, so use it.

**A homegrown app backed by PostgreSQL.** There's no dedicated connector, but its users and roles live in Postgres tables. Use the [Database](/integrations/generics/databases/connecting-databases-with-lumos) connector. You write SQL queries against your schema, and Lumos syncs accounts and entitlements from the results. If the database is on your internal network, it connects through the on-premise agent. Add write queries later if you want Lumos to provision access too.

**A vendor app with no API.** The admin portal can export users as a CSV, and changes are made by hand in the UI. Use [Flatfile](/integrations/generics/flatfile/connecting-flat-files-with-lumos) to sync the export on a schedule, and [Manual Tasks](/docs/manual-tasks) to route provisioning requests to the app's admin and track them.
