A library for filing bug reports to Linear and GitHub Issues from distributed applications. Reports are sent through a proxy server that holds API credentials.
Available for Rust and TypeScript/JavaScript.
The proxy server is available as hotln-proxy.
hotln::github("https://your-proxy.example.com")
.with_token("secret")
.title("crash on startup")
.text("Something went wrong.")
.file("config.toml", &toml_str)
.create()?;
hotln::linear("https://your-proxy.example.com")
.with_token("secret")
.title("crash on startup")
.text("Details.")
.attachment("crash.log", &log_bytes)
.create()?;import hotln from "hotln";
await hotln.github("https://your-proxy.example.com")
.withToken("secret")
.title("crash on startup")
.text("Something went wrong.")
.file("config.toml", tomlStr)
.create();
await hotln.linear("https://your-proxy.example.com")
.withToken("secret")
.title("crash on startup")
.text("Details.")
.attachment("crash.log", logBytes)
.create();Both backends use a fluent builder. Call .create() to send the request and
get back the issue URL (Result<String, Error> in Rust, Promise<string> in
TypeScript).
| Method | Description |
|---|---|
.title(s) |
Set the issue title |
.text(s) |
Append a text block to the body |
.file(name, content) |
Append a fenced code block to the body |
.attachment(name, data) |
Linear only. Upload as a real Linear attachment (binary OK) |
.with_token(s) |
Set a bearer token for proxy auth |
.create() |
Send the request and return the issue URL |
.text() and .file() blocks are joined in order, separated by blank lines.
The client POSTs JSON to the proxy. Each backend has its own path:
POST /linear— create a Linear issuePOST /github— create a GitHub issue
If with_token is set, the client sends an Authorization: Bearer <token> header.
interface LinearRequest {
title: string;
description: string;
attachments?: {
filename: string;
contentType: string;
data: string;
encoding?: "text" | "base64";
}[];
}interface GitHubRequest {
title: string;
description: string;
}interface Response {
url: string; // URL of the created issue
}A reference proxy implementation lives in hotln-proxy/. See
hotln-proxy/README.md for setup and configuration.
hotln github "crash on startup" --proxy-url https://worker.example.com
hotln linear "crash on startup" --proxy-url https://worker.example.com
hotln linear "crash on startup" --proxy-url https://worker.example.com -f config.toml -a crash.log
All flags can also be set via environment variables (HOTLINE_PROXY_URL,
HOTLINE_PROXY_TOKEN).