Skip to content

getAlby/agent-toolkit

Repository files navigation

Lightning Agent Toolkit

The Lightning Agent Toolkit provides integration between popular agent frameworks (such as LangChain and Vercel's AI SDK) and a Lightning Network wallet using Nostr Wallet Connect (NWC). Inspired by the Stripe Agent Toolkit, this library simplifies the process of allowing AI models to interact with Lightning Network functionalities like creating invoices, paying invoices, retrieving balances, and more.

Installation

You don't need this source code unless you want to modify the package. If you just want to use the package run:

npm install @getalby/agent-toolkit

Requirements

Environment Variables

Set the following environment variables:

  • OPENAI_API_KEY: Your OpenAI API key for LLM integration.
  • NWC_URL: Your NWC connection URL to interface with the Lightning wallet.

Example .env file:

OPENAI_API_KEY=sk-proj-
NWC_URL=nostr+walletconnect://wallet_pubkey?relay=wss://relay.getalby.com/v1&secret=client_secret_key

Usage

The library needs to be configured with your NWC connection string. Additionally, configuration enables you to specify the types of actions that can be taken using the toolkit.

import {LightningAgentToolkit} from '@getalby/agent-toolkit/langchain';

const lnAgentToolkit = new LightningAgentToolkit({
  secretKey: process.env.NWC_URL!,
  configuration: {
    actions: {
      invoices: {
        create: true,
      },
      payments: {
        create: true,
      },
    },
  },
});

This configuration enables the agent to create invoices and make payments through the provided LN tools.

Tools

The toolkit works with LangChain and Vercel's AI SDK and can be passed as a list of tools. For example:

Example with Vercel AI SDK

import {LightningAgentToolkit} from '@lightning/agent-toolkit/ai-sdk';
import {openai} from '@ai-sdk/openai';
import {generateText} from 'ai';

require('dotenv').config();

const lnAgentToolkit = new LightningAgentToolkit({
  nwcUrl: process.env.NWC_URL!,
  configuration: {
    actions: {
      invoices: {
        create: true,
      },
    },
  },
});

(async () => {
  const result = await generateText({
    model: openai('gpt-4'),
    tools: {
      ...lnAgentToolkit.getTools(),
    },
    maxSteps: 5,
    prompt: 'Create an invoice for 10000 msats with a description about Satoshi Nakamoto.',
  });

  console.log(result);
})();

What happens here?

  • The model reads your prompt asking to create an invoice.
  • The agent then uses the Lightning toolkit's make_invoice NIP-47 method under the hood.
  • The final result includes the invoice string and any additional information the model returns.

You can find more in examples folder.

About

Supercharge your AI agents with the power of the Lightning Network!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published