Building with AI is powerful. Setting it up is not.
If you’ve ever tried to wire up an AI agent that posts to LinkedIn, sends emails via Gmail, and generates images — you’ve felt the pain. You need API keys for your LLM provider. OAuth apps for every social platform. Token refresh logic. Secret management. Before you’ve written a single line of business logic, you’ve burned hours on infrastructure.
LyznFlow was built with one principle at its core: minimal friction for developers.
The Problem: Death by Configuration
Here’s what a typical AI workflow setup looks like without LyznFlow:
- Sign up for OpenAI / Anthropic / Google AI
- Generate API keys, store them somewhere safe
- Register an OAuth app on LinkedIn’s developer portal
- Configure redirect URIs, request scopes, handle token exchange
- Store access tokens securely, implement refresh logic
- Do the same for Gmail, X (Twitter), WhatsApp…
- Write glue code to connect everything
- Finally start building your actual workflow
That’s not building — that’s bookkeeping.
How LyznFlow Solves This
Choose Any LLM, No Keys Required
In LyznFlow, when you add an AI Agent node to your workflow, you pick your model from a dropdown: GPT-4o, Claude Sonnet, Gemini Pro, DeepSeek, Llama — whatever fits your use case.
That’s it. No API key. No provider account. No billing dashboard.
Lyzn manages the LLM infrastructure centrally. Your AI node connects to the right provider through Lyzn’s unified AI gateway. You focus on the prompt, the tools, and the logic — not on which secret goes where.
This also means you can switch models instantly. Try Claude for creative writing, GPT-4o for structured reasoning, and Gemini for multimodal tasks — without changing a single configuration.
Third-Party Integrations: One Click to Connect
LyznFlow ships with built-in integration nodes for platforms like LinkedIn, Gmail, WhatsApp, and X. These aren’t wrappers that ask you to paste in API keys. They use a connection-based architecture where authentication is handled entirely through the platform.
Here’s how it works:
- You drag a LinkedIn Post node into your workflow
- LyznFlow checks if you have a LinkedIn connection — if not, it shows a “Connect LinkedIn” widget right in the chat
- You click Connect — a standard OAuth flow opens in your browser
- You authorize Lyzn — the platform securely stores your tokens
- Done. Every LinkedIn node in every workflow now works with your account
No client IDs, no redirect URIs, no token storage, no refresh logic. Lyzn handles it all.
Deep Dive: How Connections Work
Under the hood, LyznFlow uses a pluggable ConnectionKit architecture. Every third-party integration implements a Provider interface with four core methods:
| Method | What It Does |
|---|---|
| AuthURL | Generates the OAuth authorization URL with the right scopes |
| ExchangeCode | Exchanges the authorization code for access + refresh tokens |
| GetUserProfile | Fetches the connected user’s profile |
| RefreshToken | Refreshes expired tokens automatically |
Each provider self-registers when the backend starts. Adding a new integration to LyznFlow is as simple as implementing these four methods and importing the package.
The LinkedIn Example
When you connect LinkedIn, here’s what actually happens:
- Lyzn generates an OAuth URL with scopes for posting, reading profile data, managing ads, and accessing connections
- You authorize in your browser — LinkedIn redirects back with an authorization code
- Lyzn exchanges the code for an access token and refresh token, storing both securely in the database
- Your LinkedIn profile is fetched automatically — name, headline, vanity URL, connections count — and stored alongside the connection
From this point on, any LinkedIn node in your workflows can access your account. When the LinkedIn Post node runs, it simply calls getLinkedInConnection(userID) to retrieve your stored access token and uses it directly.
If your token expires, Lyzn refreshes it automatically using the stored refresh token. You never see a “re-authenticate” prompt.
Node-Level Connection Declarations
Integration nodes declare their required connections at the definition level:
nodekit.Action("linkedin-post").
WithConnections("linkedin").
WithParams(...)
This WithConnections("linkedin") declaration tells LyznFlow that this node needs an active LinkedIn connection to run. If the user hasn’t connected LinkedIn yet, the node sends a Connect Widget — an interactive UI element right in the chat — prompting the user to authorize.
This is a key design decision: instead of failing silently or throwing cryptic errors, the system surfaces a clear, actionable prompt exactly when and where the user needs it.
What This Enables
AI Agents with Real-World Capabilities
Because integrations are zero-config, you can build powerful AI agents in minutes:
- Social Media Manager: An AI agent that drafts LinkedIn posts based on your blog content, attaches images, and publishes with one click
- Email Assistant: An agent that reads your inbox via Gmail, drafts responses, and sends them after your approval
- Content Pipeline: Generate blog content with AI, create images with DALL·E, post summaries to X and LinkedIn — all in a single workflow
- Ad Manager: Analyze LinkedIn ad campaign performance and adjust budgets using the Ads API — all through conversation
AI Tool Nodes: Let the AI Decide
Integration nodes come in two flavors:
Action Nodes execute at a fixed point in the workflow — “when execution reaches this node, post to LinkedIn.”
Tool Nodes are available to the AI agent as function-calling tools — “the AI decides when to post, based on the conversation.” For example, you might tell your AI agent: “Write a post about our latest feature and share it on LinkedIn.” The agent generates the content, selects the LinkedIn Post tool, and executes it — all autonomously.
The Tool Node version uses the same underlying connection infrastructure. The AI generates the post content and optional media parameters; the node handles the rest using the stored OAuth token.
The Architecture at a Glance
┌─────────────────────────────────────────────────┐
│ LyznFlow │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ AI Agent │───▶│ LinkedIn │───▶│ Gmail │ │
│ │ Node │ │ Node │ │ Node │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Unified │ │Connection│ │Connection│ │
│ │ AI Gate │ │ Kit │ │ Kit │ │
│ │ (karma) │ │ Provider │ │ Provider │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────┐ │
│ │ Secure Token Store │ │
│ │ (Encrypted DB + Auto-Refresh) │ │
│ └──────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
What’s Coming Next
The ConnectionKit architecture is designed to be extensible. Adding a new provider is a matter of implementing four methods. We’re actively expanding the integration library to cover more platforms and use cases.
The vision is simple: if there’s an API, you should be able to use it in LyznFlow without ever touching a configuration panel.
Build the workflow. Connect the dots. Ship.
Start building at flow.lyzn.ai — no API keys required.


