Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions doc/developers-guide/app-development.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ slug: "app-development"
excerpt: "Build a lightning application using Core Lightning APIs."
hidden: false
---

## Interacting with CLN Node

There are several ways to connect and interact with a Core Lightning node in order to build a lightning app or integrate lightning in your application.

- Using **[JSON-RPC commands](doc:json-rpc)** if you're building an application in the same system as the CLN node.
Expand All @@ -13,6 +16,69 @@ There are several ways to connect and interact with a Core Lightning node in ord
- Using **[WSS Proxy](doc:wss-proxy)** to connect to a CLN node over web secure socket proxy.
- Third-party libraries that offer **[JSON over HTTPS](doc:third-party-libraries#json-over-https)** or **[GraphQL](doc:third-party-libraries#graphql)** (deprecated) frameworks to connect to a CLN node remotely.

## CLN connection URIs

This section outlines the standard URI formats for connecting to Core Lightning (CLN) nodes via different protocols.

### Commando WebSocket Connection
```
commando+<protocol>://<cln-host>:<ws-port>?pubkey=<pubkey>&rune=<rune>&invoiceRune=<invoice-rune>&certs=<combined-base64-encoded-clientkey-clientcert-cacert>
```

#### Parameters:
- protocol: ws or wss (WebSocket or secure WebSocket)
- cln-host: Hostname or IP address of the CLN node
- ws-port: WebSocket port
- pubkey: Node's public key (hex encoded)
- rune: Authentication rune for general commands
- invoiceRune: Specific rune for invoice creation (optional)
- certs: Base64-encoded concatenation of client key, client cert, and CA cert

#### Example:

```
commando+wss://cln.local:5001?pubkey=023456789abcdef&rune=8hJ6ZKFvRune&invoiceRune=5kJ3ZKFvInvRune&certs=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0t
```

### REST API Connection
```
clnrest+<protocol>://<rest-host>:<rest-port>?rune=<rune>&certs=<combined-base64-encoded-clientkey-clientcert-cacert>
```

#### Parameters:
- protocol: http or https
- rest-host: Hostname or IP address of the REST interface
- rest-port: REST API port (typically 3010)
- rune: Authentication rune for REST API access
- certs: Base64-encoded concatenation of client key, client cert, and CA cert

#### Example:

```
clnrest+https://cln.local:3010?rune=8hJ6ZKFvRune&certs=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0t
```

## gRPC Connection

```
clngrpc://<grpc-host>:<grpc-port>?pubkey=<pubkey>&protoPath=<path-to-proto>&certs=<combined-base64-encoded-clientkey-clientcert-cacert>
```

#### Parameters:
- grpc-host: Hostname or IP address of the gRPC interface
- grpc-port: gRPC port (typically 9736)
- pubkey: Node's public key (hex encoded)
- protoPath: Path to protocol buffer definition file (typically https://github.com/ElementsProject/lightning/tree/master/cln-grpc/proto)
- certs: Base64-encoded concatenation of client key, client cert, and CA cert

#### Example:

```
clngrpc://cln.grpc:9736?pubkey=023456789abcdef&protoPath=/path/to/cln.proto&certs=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0t
```

## Image of available API interfaces and transport protocols

[block:image]
{
"images": [
Expand Down