### ngrok start examples Source: https://ngrok.com/docs/agent/cli Examples of how to use the ngrok start command to initiate tunnels. You can start a single tunnel by name, multiple tunnels, or all tunnels defined in the configuration file. ```shell ngrok start dev # start tunnel named 'dev' in the configuration file ``` ```shell ngrok start web blog # start tunnels named 'web' and 'blog' ``` ```shell ngrok start --all # start all tunnels defined in the config file ``` -------------------------------- ### Install and Start ngrokd on Mac Source: https://ngrok.com/docs/guides/device-gateway/private-connectivity Installs ngrokd using a curl script, installs the service, starts the daemon, and sets the API key. Run this on macOS. ```bash curl -fsSL https://raw.githubusercontent.com/ngrok/ngrokd/main/install.sh | sudo bash sudo ngrokd install sudo ngrokd start ngrokctl set-api-key YOUR_NGROK_API_KEY ``` -------------------------------- ### Install Go SDK Source: https://ngrok.com/docs/agent-sdks Install the ngrok Go SDK using go get. ```sh go get golang.ngrok.com/ngrok/v2 ``` -------------------------------- ### Install and Start ngrok Service Source: https://ngrok.com/docs/agent Commands to install the ngrok agent as a service using a specific configuration file and to start the service. ```bash ngrok service install --config C:\ngrok\ngrok.yml ``` ```bash ngrok service start ``` -------------------------------- ### Install ngrok Service with Configuration Source: https://ngrok.com/docs/agent/cli Installs the ngrok service and specifies the configuration file to be used. This is a required step before starting the service. ```sh ngrok service install --config=C:\ngrok.yml ``` -------------------------------- ### Install and start ngrok service Source: https://ngrok.com/docs/guides/device-gateway/raspberry-pi Commands to register and initiate the ngrok agent as a system service. ```bash ngrok service install --config $HOME/.config/ngrok/ngrok.yml ``` ```bash ngrok service start ``` -------------------------------- ### Complete AI gateway configuration Source: https://ngrok.com/docs/ai-gateway/reference/configuration-schema A full example demonstrating provider setup, model definitions, and selection strategies. ```yaml on_http_request: - type: ai-gateway config: max_input_tokens: 4096 max_output_tokens: 2048 total_timeout: "3m" per_request_timeout: "30s" on_error: "halt" only_allow_configured_providers: true only_allow_configured_models: true providers: - id: "openai" metadata: team: "ml" api_keys: - value: ${secrets.get('openai', 'primary')} - value: ${secrets.get('openai', 'backup')} - value: ${secrets.get('openai', 'emergency')} models: - id: "gpt-4o" metadata: approved: true - id: "gpt-4o-mini" metadata: approved: true - id: "anthropic" api_keys: - value: ${secrets.get('anthropic', 'key')} models: - id: "claude-3-5-sonnet-20241022" - id: "ollama-internal" base_url: "https://ollama.company.internal" models: - id: "llama3-70b" model_selection: strategy: - "ai.models.filter(m, m.provider_id == 'openai')" - "ai.models.filter(m, m.provider_id == 'anthropic')" - "ai.models.filter(m, m.provider_id == 'ollama-internal')" api_key_selection: strategy: # Prefer keys with remaining quota - "ai.keys.filter(k, k.quota.remaining_requests > 100)" # Fall back to keys with low error rates - "ai.keys.filter(k, k.error_rate.rate_limit < 0.1)" # Fall back to all keys - "ai.keys" ``` -------------------------------- ### Install and Start ngrok as a Service Source: https://ngrok.com/docs/guides/device-gateway/quickstart Install ngrok as a background service for production deployments. This ensures automatic startup and crash recovery. Specify the configuration file path as needed. ```bash ngrok service install --config /path/to/ngrok.yml ngrok service start ``` -------------------------------- ### Start Ollama Server Source: https://ngrok.com/docs/ai-gateway/custom-providers/ollama Starts the Ollama server locally. Ensure Ollama is installed and accessible. ```bash ollama serve ``` -------------------------------- ### Install and Start ngrokd on Windows Source: https://ngrok.com/docs/guides/device-gateway/private-connectivity Installs ngrokd using a PowerShell script, starts the daemon in hidden mode, and sets the API key. Requires Administrator privileges. ```powershell # Run as Administrator iwr -useb https://raw.githubusercontent.com/ngrok/ngrokd/main/install.ps1 | iex Start-Process ngrokd -ArgumentList '--config=C:\ProgramData\ngrokd\config.yml' -WindowStyle Hidden ngrokctl set-api-key YOUR_NGROK_API_KEY ``` -------------------------------- ### Start ngrok Endpoint Source: https://ngrok.com/docs/agent/agent-tls-termination Starts the configured ngrok endpoint. ```bash ngrok start demo-tls ``` -------------------------------- ### ngrok start usage Source: https://ngrok.com/docs/agent/cli This shows the basic usage of the ngrok start command. It is used to start endpoints by name from the configuration file. ```shell ngrok start [flags] ``` -------------------------------- ### Install HashiCups Sample Application Source: https://ngrok.com/docs/integrations/kubernetes-ingress/consul-k8s Apply the Kubernetes manifests to install the HashiCups sample application in the 'consul' namespace. ```bash kubectl apply -f learn-consul-kubernetes/service-mesh/deploy/hashicups -n consul ``` -------------------------------- ### Install Anthropic SDK Source: https://ngrok.com/docs/ai-gateway/sdks/anthropic Install the necessary SDK package for your environment. ```bash pip install anthropic ``` ```bash npm install @anthropic-ai/sdk ``` -------------------------------- ### Install ngrok Service Source: https://ngrok.com/docs/agent/index Installs ngrok as a service using a specified configuration file. Ensure the configuration file is valid and contains the 'authtoken' property. Do not move or delete the configuration file or ngrok executable after installation. ```bash ngrok service install --config C:\ngrok\ngrok.yml ``` -------------------------------- ### Clone and Install Sample Node.js App Source: https://ngrok.com/docs/integrations/webhooks/github-webhooks Clone the sample Node.js webhook application from GitHub and install its dependencies. ```bash git clone https://github.com/ngrok/ngrok-webhook-nodejs-sample.git cd ngrok/ngrok-webhook-nodejs-sample npm install ``` -------------------------------- ### Start ngrok Agent Source: https://ngrok.com/docs/errors/err_ngrok_3200 Use this command to start the ngrok agent and serve your local endpoint. ```bash ngrok http [port] ``` -------------------------------- ### Install JavaScript SDK Source: https://ngrok.com/docs/agent-sdks Install the ngrok JavaScript SDK using npm. ```sh npm install @ngrok/ngrok ``` -------------------------------- ### Clone and Install AfterShip Webhook Sample App Source: https://ngrok.com/docs/integrations/webhooks/aftership-webhooks Clone the sample Node.js app from GitHub and install its dependencies. ```bash git clone https://github.com/ngrok/ngrok-webhook-nodejs-sample.git cd ngrok-webhook-nodejs-sample npm install ``` -------------------------------- ### Start ngrok Agent with Custom Domain Source: https://ngrok.com/docs/errors/err_ngrok_3200 When using a custom domain, include it in the agent start command. ```bash ngrok http [port] --url [your-url] ``` -------------------------------- ### Initialize Go module and install ngrok SDK Source: https://ngrok.com/docs/getting-started/go These commands set up a new Go module, navigate into it, and install the ngrok Go SDK. This is a prerequisite for using the SDK in your project. ```bash mkdir ngrok-go-demo cd ngrok-go-demo go mod init ngrok-go-demo go get golang.ngrok.com/ngrok/v2 ``` -------------------------------- ### Initialize project directory Source: https://ngrok.com/docs/getting-started/javascript Create a new directory and a .env file for configuration. ```bash mkdir ngrok-javascript-demo && cd ngrok-javascript-demo touch .env ``` -------------------------------- ### Configure environment variables and client Source: https://ngrok.com/docs/ai-gateway/sdks/vercel-ai-sdk Set up your gateway URL and API key in environment variables, then initialize the AI client. ```bash # Your AI Gateway endpoint AI_GATEWAY_URL=https://your-ai-gateway.ngrok.app/v1 # Optional: API key if using passthrough mode OPENAI_API_KEY=sk-... ``` ```typescript const openai = createOpenAI({ baseURL: process.env.AI_GATEWAY_URL, apiKey: process.env.OPENAI_API_KEY ?? "unused", }); ``` -------------------------------- ### Start Go HTTP Server Source: https://ngrok.com/docs/getting-started/cloud-endpoints-quickstart This Go program sets up an HTTP server to respond with a simple text message. Execute 'go run service.go' to launch. ```go package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello from Go HTTP Server!") } func main() { http.HandleFunc("/", handler) fmt.Println("Starting server at http://localhost:8080") err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println("Server failed:", err) } } ``` ```bash go run service.go ``` -------------------------------- ### Clone Demo Repository Source: https://ngrok.com/docs/integrations/kubernetes-ingress/gslb Clone the example API deployment repository and navigate into it. This sets up the necessary files for the demo. ```bash git clone https://github.com/joelhans/ngrok-vps-gslb-demo cd ngrok-vps-gslb-demo ``` -------------------------------- ### Create ngrok Rust Demo Project and Install SDK Source: https://ngrok.com/docs/getting-started/rust Creates a new Rust project directory, initializes it, and adds the ngrok SDK as a dependency. This prepares your project for ngrok integration. ```bash mkdir ngrok-rust-demo cd ngrok-rust-demo cargo init cargo add ngrok ``` -------------------------------- ### Start ngrok Service Source: https://ngrok.com/docs/agent/index Starts the ngrok agent service after it has been installed. The service can also be managed using OS-specific tooling. ```bash ngrok service start ``` -------------------------------- ### Find First Occurrence of Substring Source: https://ngrok.com/docs/traffic-policy/macros Use `indexOf` to get the starting index of the first occurrence of a substring. An optional starting position can be provided for the search. ```traffic-policy 'hello mellow'.indexOf('') // returns 0 'hello mellow'.indexOf('ello') // returns 1 'hello mellow'.indexOf('jello') // returns -1 'hello mellow'.indexOf('', 2) // returns 2 'hello mellow'.indexOf('ello', 2) // returns 7 ``` -------------------------------- ### Start New Tunnel Request Body Source: https://ngrok.com/docs/agent/api This is an example request body for dynamically starting a new tunnel. Parameters are identical to those used in the ngrok configuration file. ```json { "addr": "22", "proto": "tcp", "name": "ssh" } ``` -------------------------------- ### Start Sample Node.js App Source: https://ngrok.com/docs/integrations/webhooks/okta-webhooks Start the sample Node.js application that will receive Okta webhooks. It runs on port 3000 by default. ```bash npm run startOkta ``` -------------------------------- ### Start ngrok Tunnel Source: https://ngrok.com/docs/integrations/webhooks/aftership-webhooks Start an ngrok tunnel to expose your local application running on port 3000 to the internet. This command is used after installing ngrok and obtaining an authtoken. ```bash ngrok http 3000 ``` -------------------------------- ### Install Go ngrok API Client Library Source: https://ngrok.com/docs/api/index Install the Go client library for interacting with the ngrok API. Refer to the documentation for detailed usage. ```bash go get github.com/ngrok/ngrok-api-go/v4 ``` -------------------------------- ### Tunnel Configuration with Default Policies Source: https://ngrok.com/docs/guides/device-gateway/sdk Example JSON response showing a tunnel started with default policies applied. ```json { "url": "https://device123.sitea.configurable-domain.com", "protocol": "http", "forwards_to": "localhost:8001", "domain": "agent.sitea.configurable-domain.com", "policy": null } ``` -------------------------------- ### Start Minikube Cluster Source: https://ngrok.com/docs/integrations/kubernetes-ingress/azure-ad-k8s Create a new minikube cluster named 'online-boutique'. ```bash minikube start -p online-boutique ``` -------------------------------- ### Tunnel Configuration with Custom Policies Source: https://ngrok.com/docs/guides/device-gateway/sdk Example JSON response showing a tunnel started with custom policies specified in the request. ```json { "url": "https://device123.sitea.configurable-domain.com", "protocol": "http", "forwards_to": "localhost:8001", "domain": "device123.sitea.configurable-domain.com", "policy": { "on_http_request": [], "on_http_response": [ { "expressions": [], "name": "Add headers to requests", "actions": [ { "type": "add-headers", "config": { "headers": { "is-ngrok": "444" } } } ] } ] } } ``` -------------------------------- ### Start ngrok in GitHub Actions Source: https://ngrok.com/docs/universal-gateway/examples/ephemeral-workloads Automates the installation and execution of an ngrok tunnel within a CI/CD pipeline to expose a local service. ```yaml name: Deploy Preview on: pull_request: types: [opened, synchronize, reopened] jobs: preview: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build and start app run: | # Build your app npm install && npm run build # Start your app in the background npm run start & sleep 5 - name: Install ngrok run: | curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \ | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \ | sudo tee /etc/apt/sources.list.d/ngrok.list sudo apt update && sudo apt install ngrok - name: Start ngrok tunnel env: NGROK_AUTHTOKEN: ${{ secrets.NGROK_AUTHTOKEN }} run: | ngrok config add-authtoken $NGROK_AUTHTOKEN ngrok http 3000 --url https://pr-${{ github.event.pull_request.number }}.internal & sleep 5 - name: Run tests against preview run: | curl -sSf https://pr-${{ github.event.pull_request.number }}.preview.example.com - name: Comment preview URL uses: actions/github-script@v7 with: script: | github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: `🚀 Deploy preview available at: https://pr-${{ github.event.pull_request.number }}.preview.example.com` }) ``` -------------------------------- ### Start vLLM Server Source: https://ngrok.com/docs/ai-gateway/custom-providers/vllm Start the vLLM OpenAI-compatible server. Ensure your environment has sufficient GPU VRAM for the chosen model. ```bash vllm serve meta-llama/Llama-3.2-8B-Instruct ``` -------------------------------- ### Example PEM Certificate Bundle Format Source: https://ngrok.com/docs/universal-gateway/tls-certificates The expected structure for a concatenated PEM-encoded X.509 certificate bundle, starting with the leaf certificate. ```pem -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- ``` -------------------------------- ### Clone and Navigate to Microservices Demo Project Source: https://ngrok.com/docs/integrations/kubernetes-ingress/azure-ad-k8s Clone the GoogleCloudPlatform/microservices-demo repository and navigate into the project directory. ```bash git clone https://github.com/GoogleCloudPlatform/microservices-demo cd microservices-demo ``` -------------------------------- ### Start Tunnel with Default Policies Source: https://ngrok.com/docs/guides/device-gateway/sdk Use curl to send a POST request to the agent's API to start a new tunnel. This example uses default policies defined in test.json. Replace placeholders like {HOST}, {PORT}, {TUNNEL_DOMAIN}, and {YOUR_AGENT_DOMAIN}. ```curl curl -k \ -X POST \ -H "Content-Type: application/json" \ -d '{"protocol": "http", "forwards_to": "{HOST}:{PORT}", "domain": "{TUNNEL_DOMAIN}"}' \ https://{YOUR_AGENT_DOMAIN}/tunnels ``` -------------------------------- ### ngrok api pointcfg-module oidc get Source: https://ngrok.com/docs/agent/cli-api Retrieves an OIDC configuration by its ID. This command is used to fetch the details of a specific OIDC setup. ```APIDOC ## ngrok api pointcfg-module oidc get ### Description Retrieves an OIDC configuration by its ID. ### Method GET ### Endpoint /api/ngrok/pointcfg/module/oidc/{id} ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the OIDC configuration to retrieve. #### Flags - **--api-key** (string) - API key to use. - **--config** (string) - Path to config files; they are merged if multiple. - **--log** (string) - Path to log file, ‘stdout’, ‘stderr’ or ‘false’. - **--log-format** (string) - Log record format: ‘term’, ‘logfmt’, ‘json’. - **--log-level** (string) - Logging level: ‘debug’, ‘info’, ‘warn’, ‘error’, ‘crit’. ``` -------------------------------- ### Start Sample Node.js Facebook Webhook App Source: https://ngrok.com/docs/integrations/webhooks/facebook-webhooks Run the sample Node.js application to start the webhook listener. This command initiates the server that will receive incoming webhook events. ```bash npm run startFacebook ``` -------------------------------- ### Expose PostgreSQL with ngrok TCP Source: https://ngrok.com/docs/using-ngrok-with/postgresql Start an ngrok TCP tunnel to forward traffic to your local PostgreSQL instance running on port 5432. Ensure you have ngrok installed and authenticated. ```bash ngrok tcp 5432 ``` -------------------------------- ### Forward TCP Traffic using Javascript SDK Source: https://ngrok.com/docs/universal-gateway/tcp Configure TCP traffic forwarding with the Javascript SDK. Ensure the SDK is installed and authentication is handled, for example, via environment variables. ```javascript const ngrok = require("@ngrok/ngrok"); (async function () { const listener = await ngrok.forward({ addr: "192.168.1.2:5432", authtoken_from_env: true, proto: "tcp", }); console.log(`Ingress established at: ${listener.url()}`); })(); ``` -------------------------------- ### Example request to /products Source: https://ngrok.com/docs/traffic-policy/actions/redirect A curl command to simulate a request to the '/products' endpoint, which will be redirected. ```bash $ curl -i https://example.ngrok.app/products ``` -------------------------------- ### Start the Sample Slack App Source: https://ngrok.com/docs/integrations/webhooks/slack-webhooks Run the sample Node.js application configured for Slack webhooks. The app defaults to running on port 3000. ```bash npm run startSlack ``` -------------------------------- ### Example Request with JWT Token Source: https://ngrok.com/docs/guides/device-gateway/traffic-policy This bash command demonstrates how to send a GET request to an ngrok-tunneled API endpoint with a valid JWT token in the Authorization header. The `Bearer` prefix is required for the token. ```bash $ curl --request GET \ --url http://example-api.ngrok.app/ \ --header 'authorization: Bearer ' ``` -------------------------------- ### Start All Defined Endpoints Source: https://ngrok.com/docs/agent/config/v3 Use the `ngrok start --all` command to launch all endpoints defined in the agent configuration simultaneously. ```sh ngrok start --all ``` -------------------------------- ### Expose MySQL Database with ngrok TCP Source: https://ngrok.com/docs/using-ngrok-with/mysql Use this command to start an ngrok TCP tunnel for your local MySQL database running on port 3306. Ensure you have ngrok installed and configured with an authtoken and a valid payment method for TCP endpoints. ```bash ngrok tcp 3306 ``` -------------------------------- ### Install ngrok CRDs and Operator Separately Source: https://ngrok.com/docs/k8s/installation/uninstall Installs the ngrok CRDs using a dedicated Helm chart and then installs the ngrok operator, disabling CRD installation within the operator. Requires ngrok API key and authtoken. ```bash helm repo add ngrok https://charts.ngrok.com helm repo update helm install ngrok-crds ngrok/ngrok-crds helm install ngrok-operator ngrok/ngrok-operator \ --namespace=ngrok-operator \ --create-namespace \ --set credentials.apiKey=$NGROK_API_KEY \ --set credentials.authtoken=$NGROK_AUTHTOKEN \ --set installCRDs=false ``` -------------------------------- ### Example Cluster Creation Output Source: https://ngrok.com/docs/integrations/kubernetes-ingress/digitalocean-k8s This is an example output after successfully initiating the creation of a DigitalOcean Kubernetes cluster, showing the cluster ID, name, region, version, and status. ```bash ... Notice: Successfully kicked off addon job. ID Name Region Version Auto Upgrade Status Node Pools d62a17ca-32e0-4d8b-9260-2d0d1c582939 ngrokker nyc1 1.29.1-do.0 false running ngrokker-default-pool ``` -------------------------------- ### Install ngrok CRDs separately Source: https://ngrok.com/docs/k8s/guides/multiple-installs Required step before installing multiple operators to prevent Helm ownership conflicts. Set installCRDs=false on all subsequent operator installations. ```bash helm repo add ngrok https://charts.ngrok.com helm repo update helm install ngrok-crds ngrok/ngrok-crds ``` -------------------------------- ### Start the AfterShip Webhook Sample App Source: https://ngrok.com/docs/integrations/webhooks/aftership-webhooks Run the sample Node.js application. It defaults to port 3000 and logs request details. ```bash npm start ``` -------------------------------- ### Get Event Subscription Source: https://ngrok.com/docs/llms.txt Get an Event Subscription by ID. ```APIDOC ## GET /eventsubscriptions/{id} ### Description Get an Event Subscription by ID. ### Method GET ### Endpoint /eventsubscriptions/{id} ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the Event Subscription to retrieve. ### Response #### Success Response (200) - **id** (string) - The unique identifier for the Event Subscription. - **name** (string) - The name of the Event Subscription. - **event_destination_id** (string) - The ID of the Event Destination. - **created_at** (string) - The timestamp when the Event Subscription was created. #### Response Example { "id": "es_12345", "name": "my-event-subscription", "event_destination_id": "ed_12345", "created_at": "2023-01-01T12:00:00Z" } ``` -------------------------------- ### Create Directory and .env File Source: https://ngrok.com/docs/getting-started/python Set up a new directory for your ngrok demo and create a .env file to store your ngrok authentication token and reserved domain. ```bash mkdir ngrok-python-demo && cd ngrok-python-demo touch .env ``` -------------------------------- ### Start the ngrok Service Source: https://ngrok.com/docs/guides/device-gateway/windows Start the ngrok service to ensure it runs automatically on device startup. Administrator privileges may be required. ```bash ngrok service start ``` -------------------------------- ### Test ngrok Agent CLI Installation Source: https://ngrok.com/docs/getting-started Verify the ngrok Agent CLI installation by running the help command. This should display the ngrok help text if installed correctly. ```bash ngrok help ``` -------------------------------- ### Start the Node.js server Source: https://ngrok.com/docs/getting-started/javascript Command to execute the local server script. ```bash node service.js ``` -------------------------------- ### Start ngrok Agent Source: https://ngrok.com/docs/guides/site-to-site-connectivity/quickstart Commands to initiate the ngrok agent using either the default or a specified configuration file. ```bash ngrok start --all ``` ```bash ngrok start --config /path/to/ngrok.yml --all ``` -------------------------------- ### ngrok api reserved-domains get Source: https://ngrok.com/docs/agent/cli-api Get the details of a reserved domain. ```APIDOC ## ngrok api reserved-domains get ### Description Get the details of a reserved domain. ### Usage ``` ngrok api reserved-domains get [flags] ``` ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the reserved domain. ### Flags - **--api-key** (string) - API key to use - **--config** (string) - path to config files; they are merged if multiple - **--log** (string) - path to log file, ‘stdout’, ‘stderr’ or ‘false’ - **--log-format** (string) - log record format: ‘term’, ‘logfmt’, ‘json’ - **--log-level** (string) - logging level: ‘debug’, ‘info’, ‘warn’, ‘error’, ‘crit’ ``` -------------------------------- ### ngrok tls Examples Source: https://ngrok.com/docs/agent/cli Examples demonstrating how to forward TLS traffic for a specific hostname, use a subdomain, or terminate TLS traffic with a custom certificate and key. ```sh # forward TLS traffic for example.com to port 443 (requires CNAME) ngrok tls --url=example.com 443 # forward TLS traffic on subdomain (mismatch certificate warning) ngrok tls 1234 # terminate TLS traffic for t.co before forwarding ngrok tls --url=t.co --crt=/path/to/t.co.crt --key=/path/to/t.co.key 443 ``` -------------------------------- ### Install dotenv package Source: https://ngrok.com/docs/getting-started/javascript Install the dotenv package to load environment variables. ```bash npm install dotenv ``` -------------------------------- ### Install ngrok SDK Source: https://ngrok.com/docs/getting-started/javascript Install the official ngrok package via npm. ```bash npm install @ngrok/ngrok ``` -------------------------------- ### Install LangChain dependencies Source: https://ngrok.com/docs/ai-gateway/sdks/langchain Install the necessary LangChain packages for Python or TypeScript. ```bash pip install langchain langchain-openai ``` ```bash npm install langchain @langchain/openai ``` -------------------------------- ### Install Rust SDK Source: https://ngrok.com/docs/agent-sdks Install the ngrok Rust SDK using cargo. ```sh cargo add ngrok ```