← LinkedIn demo

AILANG×docs.n8n.io

AI portable generated 2026-05-14
agent-ready privacy portable

docs.n8n.io scored 7/10 on portable.

The radar shows AILANG-readiness across three commercial concerns. High means docs.n8n.io is already strong there; low means AILANG could meaningfully help.

Why portable scored 7/10
  • Page copy that names one specific LLM provider (e.g. "powered by Claude") without portability claims.
  • Body mentions two or more named AI providers (Claude, GPT, Gemini, Mistral, Llama, etc.) — already vendor-multi.
  • Body mentions self-hosted, on-prem, WASM, Docker, Kubernetes, or "deploy anywhere" — runtime portability claimed.
  • Body mentions "bring your own key", "BYOK", "any LLM", or "model-agnostic" — caller controls the model.

Full breakdown ↓ · View rubric ↗

Technical users, developers, and administrators who build, deploy, or manage automated workflows using the n8n platform.

This documentation provides guides for using, hosting, and administering the n8n workflow automation platform. It covers topics like building workflows with nodes, integrating various services, managing user access, and deploying n8n, catering to both new and experienced users.
workflows nodes integrations self-hosting user management credentials

What AILANG Parse sees on docs.n8n.io

Structural extraction — the same content an AI agent would consume from this page.

1 headings1 images5 lists0 tables4 linksHTML parsing by AILANG Parse

8 sections — page skeleton

1 header 4 navs 1 main 1 article 1 footer

1 headings

Self-hosting n8n#

1 images

logo

5 list items

[ Using n8n ](..) [ Integrations ](../integrations/) [ Hosting n8n ](./) [ Code in n8n ](../code/) [ Advanced AI ](../advanced-ai/) [ API ](../api/) [n8n home ↗](https://n8n.io/) [Forum ↗](https://community.n8n.io/) [Tutorials (blog) ↗](https://blog.n8n.io/tag/tutorial/) [ Using n8n ](..) Using n8n … Getting started Getting started [ … [ Learning path ](../learning-path/)
Show the full extract — what AILANG Parse pulled from this page
# n8n Hosting Documentation and Guides | n8n Docs


[Skip to content](#self-hosting-n8n)

*Header:*
[Image: logo]

[(link)](..)

n8n Docs

Chat with the docs

Initializing search

- [
          
  
  
    
  
  Using n8n

        ](..)
- [
          
  
  
    
  
  Integrations

        ](../integrations/)
- [
          
  
  
    
  
  Hosting n8n

        ](./)
- [
          
  
  
    
  
  Code in n8n

        ](../code/)
- [
          
  
  
    
  
  Advanced AI

        ](../advanced-ai/)
- [
          
  
  
    
  
  API

        ](../api/)

- [n8n home ↗](https://n8n.io/)
- [Forum ↗](https://community.n8n.io/)
- [Tutorials (blog) ↗](https://blog.n8n.io/tag/tutorial/)

n8n Docs

- [
    
  
    Using n8n
  

    
  ](..)

            
  
    Using n8n
  

          

    
  
    Getting started
  

    
  

            
  
    Getting started
  

          

[
    
  
    Learning path
  

    
  ](../learning-path/)
[
    
  
    Choose your n8n
  

    
  ](../choose-n8n/)

[
    
  
    Quickstarts
  

    
  ](../try-it-out/)

            
  
    Quickstarts
  

          

[
    
  
    A very quick quickstart
  

    
  ](../try-it-out/quickstart/)
[
    
  
    A longer introduction
  

    
  ](../try-it-out/tutorial-first-workflow/)
[
    
  
    Video courses
  

    
  ](../video-courses/)

[
    
  
    Text courses
  

    
  ](../courses/)

            
  
    Text courses
  

          

[
    
  
    Level one
  

    
  ](../courses/level-one/)

            
  
    Level one
  

          

[
    
  
    Navigating the editor UI
  

    
  ](../courses/level-one/chapter-1/)
[
    
  
    Building a mini-workflow
  

    
  ](../courses/level-one/chapter-2/)
[
    
  
    Automating a (real-world) use case
  

    
  ](../courses/level-one/chapter-3/)
[
    
  
    Designing the workflow
  

    
  ](../courses/level-one/chapter-4/)

    
  
    Building the workflow
  

    
  

            
  
    Building the workflow
  

          

[
    
  
    Getting data from the data warehouse
  

    
  ](../courses/level-one/chapter-5/chapter-5.1/)
[
    
  
    Inserting data into airtable
  

    
  ](../courses/level-one/chapter-5/chapter-5.2/)
[
    
  
    Filtering orders
  

    
  ](../courses/level-one/chapter-5/chapter-5.3/)
[
    
  
    Setting values for processing orders
  

    
  ](../courses/level-one/chapter-5/chapter-5.4/)
[
    
  
    Calculating booked orders
  

    
  ](../courses/level-one/chapter-5/chapter-5.5/)
[
    
  
    Notifying the team
  

    
  ](../courses/level-one/chapter-5/chapter-5.6/)
[
    
  
    Scheduling the workflow
  

    
  ](../courses/level-one/chapter-5/chapter-5.7/)
[
    
  
    Activating and examining the workflow
  

    
  ](../courses/level-one/chapter-5/chapter-5.8/)
[
    
  
    Exporting and importing workflows
  

    
  ](../courses/level-one/chapter-6/)
[
    
  
    Test your knowledge
  

    
  ](../courses/level-one/chapter-7/)

[
    
  
    Level two
  

    
  ](../courses/level-two/)

            
  
    Level two
  

          

[
    
  
    Understanding the data structure
  

    
  ](../courses/level-two/chapter-1/)
[
    
  
    Processing different data types
  

    
  ](../courses/level-two/chapter-2/)
[
    
  
    Merging and splitting data
  

    
  ](../courses/level-two/chapter-3/)
[
    
  
    Dealing with errors in workflows
  

    
  ](../courses/level-two/chapter-4/)

    
  
    Automating a business workflow
  

    
  

            
  
    Automating a business workflow
  

          

[
    
  
    Use case
  

    
  ](../courses/level-two/chapter-5/chapter-5.0/)
[
    
  
    Workflow 1
  

    
  ](../courses/level-two/chapter-5/chapter-5.1/)
[
    
  
    Workflow 2
  

    
  ](../courses/level-two/chapter-5/chapter-5.2/)
[
    
  
    Workflow 3
  

    
  ](../courses/level-two/chapter-5/chapter-5.3/)
[
    
  
    Test your knowledge
  

    
  ](../courses/level-two/chapter-6/)

    
  
    Using the app
  

    
  

            
  
    Using the app
  

          

[
    
  
    Understand workflows
  

    
  ](../workflows/)

            
  
    Understand workflows
  

          

[
    
  
    Create and run
  

    
  ](../workflows/create/)
[
    
  
    Save and publish
  

    
  ](../workflows/publish/)

[
    
  
    Components
  

    
  ](../workflows/components/)

            
  
    Components
  

          

[
    
  
    Nodes
  

    
  ](../workflows/components/nodes/)
[
    
  
    Connections
  

    
  ](../workflows/components/connections/)
[
    
  
    Sticky Notes
  

    
  ](../workflows/components/sticky-notes/)

[
    
  
    Executions
  

    
  ](../workflows/executions/)

            
  
    Executions
  

          

[
    
  
    Manual, partial, and production executions
  

    
  ](../workflows/executions/manual-partial-and-production-executions/)
[
    
  
    Dirty nodes
  

    
  ](../workflows/executions/dirty-nodes/)
[
    
  
    Workflow-level executions
  

    
  ](../workflows/executions/single-workflow-executions/)
[
    
  
    All executions
  

    
  ](../workflows/executions/all-executions/)
[
    
  
    Custom executions data
  

    
  ](../workflows/executions/custom-executions-data/)
[
    
  
    Debug executions
  

    
  ](../workflows/executions/debug/)
[
    
  
    Redact execution data
  

    
  ](../workflows/executions/execution-data-redaction/)
[
    
  
    Tags
  

    
  ](../workflows/tags/)
[
    
  
    Export and import
  

    
  ](../workflows/export-import/)
[
    
  
    Templates
  

    
  ](../workflows/templates/)
[
    
  
    Sharing
  

    
  ](../workflows/sharing/)
[
    
  
    Settings
  

    
  ](../workflows/settings/)
[
    
  
    Streaming responses
  

    
  ](../workflows/streaming/)
[
    
  
    Workflow history
  

    
  ](../workflows/history/)
[
    
  
    Workflow ID
  

    
  ](../workflows/workflow-id/)
[
    
  
    Sub-workflow conversion
  

    
  ](../workflows/subworkflow-conversion/)

[
    
  
    Manage credentials
  

    
  ](../credentials/)

            
  
    Manage credentials
  

          

[
    
  
    Create and edit
  

    
  ](../credentials/add-edit-credentials/)
[
    
  
    Credential sharing
  

    
  ](../credentials/credential-sharing/)

[
    
  
    Manage users and access
  

    
  ](../user-management/)

            
  
    Manage users and access
  

          

[
    
  
    Cloud setup
  

    
  ](../user-management/cloud-setup/)
[
    
  
    Manage users
  

    
  ](../user-management/manage-users/)
[
    
  
    Account types
  

    
  ](../user-management/account-types/)

[
    
  
    Role-based access control
  

    
  ](../user-management/rbac/)

            
  
    Role-based access control
  

          

[
    
  
    Role types
  

    
  ](../user-management/rbac/role-types/)
[
    
  
    Projects
  

    
  ](../user-management/rbac/projects/)
[
    
  
    Custom roles
  

    
  ](../user-management/rbac/custom-roles/)
[
    
  
    Best practices
  

    
  ](../user-management/best-practices/)
[
    
  
    2FA
  

    
  ](../user-management/two-factor-auth/)
[
    
  
    LDAP
  

    
  ](../user-management/ldap/)

[
    
  
    OIDC
  

    
  ](../user-management/oidc/)

            
  
    OIDC
  

          

[
    
  
    Set up OIDC
  

    
  ](../user-management/oidc/setup/)
[
    
  
    Troubleshooting
  

    
  ](../user-management/oidc/troubleshooting/)

[
    
  
    SAML
  

    
  ](../user-management/saml/)

            
  
    SAML
  

          

[
    
  
    Set up SAML
  

    
  ](../user-management/saml/setup/)
[
    
  
    Okta Workforce Identity SAML setup
  

    
  ](../user-management/saml/okta/)
[
    
  
    Azure AD SAML setup
  

    
  ](../user-management/saml/azuread/)
[
    
  
    Manage users with SAML
  

    
  ](../user-management/saml/managing/)
[
    
  
    Troubleshooting
  

    
  ](../user-management/saml/troubleshooting/)
[
    
  
    Keyboard shortcuts
  

    
  ](../keyboard-shortcuts/)

    
  
    Key concepts
  

    
  

            
  
    Key concepts
  

          

[
    
  
    Flow logic
  

    
  ](../flow-logic/)

            
  
    Flow logic
  

          

[
    
  
    Splitting with conditionals
  

    
  ](../flow-logic/splitting/)
[
    
  
    Merging data
  

    
  ](../flow-logic/merging/)
[
    
  
    Looping
  

    
  ](../flow-logic/looping/)
[
    
  
    Waiting
  

    
  ](../flow-logic/waiting/)
[
    
  
    Sub-workflows
  

    
  ](../flow-logic/subworkflows/)
[
    
  
    Error handling
  

    
  ](../flow-logic/error-handling/)
[
    
  
    Execution order in multi-branch workflows
  

    
  ](../flow-logic/execution-order/)

[
    
  
    Working with data
  

    
  ](../data/)

            
  
    Working with data
  

          

[
    
  
    How n8n structures data
  

    
  ](../data/data-structure/)
[
    
  
    Expressions versus data nodes
  

    
  ](../data/expressions/)

[
    
  
    Referencing data
  

    
  ](../data/data-mapping/)

            
  
    Referencing data
  

          

[
    
  
    Referencing data in the UI
  

    
  ](../data/data-mapping/data-mapping-ui/)
[
    
  
    Referencing previous nodes
  

    
  ](../data/data-mapping/referencing-other-nodes/)

[
    
  
    Linking data items
  

    
  ](../data/data-mapping/data-item-linking/)

            
  
    Linking data items
  

          

[
    
  
    How items link through workflows
  

    
  ](../data/data-mapping/data-item-linking/item-linking-concepts/)
[
    
  
    Accessing linked items in the Code node
  

    
  ](../data/data-mapping/itemmatching/)
[
    
  
    Preserving linking in the Code node
  

    
  ](../data/data-mapping/data-item-linking/item-linking-code-node/)
[
    
  
    Item linking errors
  

    
  ](../data/data-mapping/data-item-linking/item-linking-errors/)
[
    
  
    Item linking for node creators
  

    
  ](../data/data-mapping/data-item-linking/item-linking-node-building/)

    
  
    Transforming data
  

    
  

            
  
    Transforming data
  

          

[
    
  
    Approaches for transforming data
  

    
  ](../data/transforming-data/)
[
    
  
    Expressions for data transformation
  

    
  ](../data/expressions-for-transformation/)

[
    
  
    Expression reference
  

    
  ](../data/expression-reference/)

            
  
    Expression reference
  

          

[
    
  
    Array
  

    
  ](../data/expression-reference/array/)
[
    
  
    BinaryFile
  

    
  ](../data/expression-reference/binaryfile/)
[
    
  
    Boolean
  

    
  ](../data/expression-reference/boolean/)
[
    
  
    CustomData
  

    
  ](../data/expression-reference/customdata/)
[
    
  
    Date
  

    
  ](../data/expression-reference/date/)
[
    
  
    DateTime
  

    
  ](../data/expression-reference/datetime/)
[
    
  
    ExecData
  

    
  ](../data/expression-reference/execdata/)
[
    
  
    HTTPResponse
  

    
  ](../data/expression-reference/httpresponse/)
[
    
  
    Item
  

    
  ](../data/expression-reference/item/)
[
    
  
    NodeInputData
  

    
  ](../data/expression-reference/nodeinputdata/)
[
    
  
    NodeOutputData
  

    
  ](../data/expression-reference/nodeoutputdata/)
[
    
  
    Number
  

    
  ](../data/expression-reference/number/)
[
    
  
    Object
  

    
  ](../data/expression-reference/object/)
[
    
  
    PrevNodeData
  

    
  ](../data/expression-reference/prevnodedata/)
[
    
  
    Root
  

    
  ](../data/expression-reference/root/)
[
    
  
    String
  

    
  ](../data/expression-reference/string/)
[
    
  
    WorkflowData
  

    
  ](../data/expression-reference/workflowdata/)
[
    
  
    Filtering data
  

    
  ](../data/data-filtering/)
[
    
  
    Pinning and mocking data
  

    
  ](../data/data-pinning/)

    
  
    Spe
page preview · the URL we fetched https://docs.n8n.io/hosting/ ↗
Screenshot of docs.n8n.io

Couldn't render a preview for this site. Open the URL in a new tab ↗

Screenshot via thum.io

docs.n8n.io scored 7/10 on portable. AILANG opportunity is therefore 3/10. Here's where it would land first.

Same module, any LLM — picked at the CLI

Provider selection isn't a code edit — it's a flag on the run command. The exact same compiled .ail file talks to Anthropic, Google, OpenAI, OpenRouter or local Ollama depending on what you pass to `--ai`. Vendor lock-in becomes a shell-history concern.

# Same chat.ail, three vendors — no source change.
ailang run --ai claude-haiku-4-5  chat.ail
ailang run --ai gemini-2.5-flash chat.ail
ailang run --ai gpt-5.1-nano     chat.ail
# std/ai dispatches to each provider's native API.
→ AILANG docs

Structured output, portable across providers

callJson(prompt, schema) maps to each provider's native structured-output primitive — responseSchema for Gemini, response_format for OpenAI, forced-tool for Anthropic. Your schema, their plumbing.

let result = callJson(prompt, intentSchema);
-- same AILANG code, four different provider paths underneath.
→ AILANG docs

OpenRouter routing with replayable resolution

Reach SOTA open-source models through OpenRouter; the resolved model ID is logged so the eval is replayable months later, even if the upstream router has moved on.

call(prompt, model = "openrouter/meta-llama/llama-4-405b");
-- the eval harness pins the exact resolved model ID.
→ AILANG docs

How this page was made

func sketchSite(url: string<pii>, topic: Topic) -> Sketch
  ! {Net @limit=1, AI @limit=5, FS @limit=4, Process, Declassify}
SignalTopicResultPointsAILANG primitive
agent.json referencedagent-ready0/1ailang serve-api generates A2A agent cards automatically — bonus if you're an early adopter
openapi.json referencedagent-ready0/2ailang serve-api generates OpenAPI 3.1 from Hindley-Milner type signatures
MCP endpoint referencedagent-ready2/2ailang serve-api --mcp-http exposes typed functions as MCP tools
Public API docs linkedagent-ready2/2ailang serve-api hosts Swagger + ReDoc at /api/_meta/ by default
Webhooks documentedagent-ready2/2ailang serve-api handles webhooks as typed handler functions with effect-tracked side effects
Rate limits documentedagent-ready2/2Capability budgets — Net @limit=N is the symmetric server-side primitive for what agents see as rate limits
Streaming / SSE endpointagent-ready0/2std/stream — ssePost and Stream effect handle event-source endpoints with typed event types
Sandbox / test environment offeredagent-ready0/2ailang --ai-stub plus mock effect handlers — deterministic, capability-scoped fakes for any effect, including Net and AI
Authentication documentedagent-ready2/2std/jwt for verification, IFC labels (string / string) to keep credentials out of public sinks at the type level
Idempotency keys documentedagent-ready0/2Pure functions are idempotent by construction; requires/ensures contracts express idempotence as a static guarantee
AG-UI streaming protocolagent-ready0/1std/stream — the AG-UI event lifecycle (RUN_STARTED → TEXT_MESSAGE_CONTENT → TOOL_CALL_RESULT → RUN_FINISHED) is a textbook sum type. ADTs + exhaustive pattern matching make every event-type branch a compile error to skip.
HTTP 402 agent payments (x402 / pay-per-crawl)agent-ready0/1Net @endpoint-scoped capability budgets bound payment destinations; requires { amount <= budget } gates the payload; IFC labels keep the signed payment key out of public sinks. Same primitives cover x402 payload signing and Cloudflare's crawler-price negotiation.
AP2 Agent Payments Protocolagent-ready0/1Mandates ARE contracts. requires { intent.price <= mandate.maxPrice } + ensures { cart.total <= intent.price } is a one-to-one translation of an Intent/Cart Mandate into AILANG. Z3 can verify the bounds at compile time.
UTCP tool-calling protocolagent-ready0/1Typed function signatures are the manifest. ailang serve-api emits the same metadata as a UTCPManual (name, input/output schema, native endpoint) — direct-call discovery without a proxy server.
End-to-end encryption documentedprivacy0/2IFC labels (string) force decryption to flow through a typed boundary; the compiler refuses to publish sealed values without explicit declassification
Compliance certifications citedprivacy0/2requires/ensures contracts express machine-verifiable claims; capability budgets bound audit-trail effects; effect rows leave nothing un-declared
Data minimisation languageprivacy0/2Capability scoping — each Net call declares its endpoint in the effect row, so "doesn't sell" becomes a type-system-enforceable claim, not a marketing one
Third-party domains restrainedprivacy1/2Capability scoping — each Net call declares its endpoint in the effect row
Data residency / on-prem languageprivacy2/2Three-runtime deploy — same module runs in WASM (browser), Cloud Run, and native CLI
Single-vendor LLM languageportable2/2std/ai multi-provider — switch from Anthropic to Gemini to OpenAI without rewriting
Multiple AI providers citedportable2/2std/ai — one Step API across Anthropic, OpenAI, Gemini, OpenRouter, Ollama, and custom-package providers
Cross-runtime / deployment portabilityportable2/2Effect handlers as runtime adapters — same .ail runs as WASM in the browser, a Cloud Run container, and a native CLI; only the handlers change
BYO key / model-agnosticportable0/2AILANG WASM — the full interpreter ships as a browser bundle, so caller-held keys (BYOK), offline apps, and embedded demos all work client-side