productivity
Caddy Lua API for KosmoKrator Agents
Agent-facing Lua documentation and function reference for the Caddy KosmoKrator integration.Lua Namespace
Agents call this integration through app.integrations.caddy.*.
Use lua_read_doc("integrations.caddy") inside KosmoKrator to discover the same reference at runtime.
Call Lua from the Headless CLI
Use kosmo integrations:lua when a shell script, CI job, cron job, or another coding CLI should run a deterministic
Caddy workflow without starting an interactive agent session.
kosmo integrations:lua --eval 'dump(app.integrations.caddy.list_sites({page = 1, per_page = 1}))' --json kosmo integrations:lua --eval 'print(docs.read("caddy"))' --json
kosmo integrations:lua --eval 'print(docs.read("caddy.list_sites"))' --json Workflow file
Put repeatable logic in a Lua file, then execute it with JSON output for the calling process.
local caddy = app.integrations.caddy
local result = caddy.list_sites({page = 1, per_page = 1})
dump(result) kosmo integrations:lua workflow.lua --json
kosmo integrations:lua workflow.lua --force --json integrations:lua exposes app.integrations.caddy, app.mcp.*, docs.*, json.*, and regex.*. Use app.integrations.caddy.default.* or app.integrations.caddy.work.* when you configured named credential accounts.
MCP-only Lua
If the script only needs configured MCP servers and does not need Caddy, use the narrower mcp:lua command.
# Use mcp:lua for MCP-only scripts; use integrations:lua for this integration namespace.
kosmo mcp:lua --eval 'dump(mcp.servers())' --json Agent-Facing Lua Docs
This is the rendered version of the full Lua documentation exposed to agents when they inspect the integration namespace.
Caddy — Lua API Reference
list_sites
List all Caddy sites.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
page | integer | no | Page number for pagination (default: 1) |
per_page | integer | no | Number of sites per page (default: 20) |
Examples
-- List all sites
local result = app.integrations.caddy.list_sites({})
for _, site in ipairs(result.sites) do
print(site.name .. " (" .. site.status .. ") - " .. site.id)
end
-- Paginated listing
local result = app.integrations.caddy.list_sites({
page = 2,
per_page = 10
})
get_site
Get detailed information about a specific Caddy site.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
site_id | string | yes | The site identifier |
Examples
local result = app.integrations.caddy.get_site({
site_id = "abc123"
})
print("Site: " .. result.name)
print("Status: " .. result.status)
create_site
Create a new site in Caddy.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name | string | yes | The domain name for the site (e.g., “example.com”) |
config | object | no | Optional site configuration (Caddy JSON config or key-value pairs) |
Examples
-- Create a basic site
local result = app.integrations.caddy.create_site({
name = "mysite.example.com"
})
print(result.message)
print("Site ID: " .. result.id)
-- Create a site with custom config
local result = app.integrations.caddy.create_site({
name = "mysite.example.com",
config = {
auto_https = "on",
log_format = "json"
}
})
delete_site
Delete a site from Caddy. This action is irreversible.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
site_id | string | yes | The site identifier to delete |
Examples
local result = app.integrations.caddy.delete_site({
site_id = "abc123"
})
print(result.message)
list_certificates
List all TLS certificates managed by Caddy.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
page | integer | no | Page number for pagination (default: 1) |
per_page | integer | no | Number of certificates per page (default: 20) |
Examples
-- List all certificates
local result = app.integrations.caddy.list_certificates({})
for _, cert in ipairs(result.certificates) do
print(cert.domain .. " expires: " .. (cert.expires_at or "N/A"))
end
-- Paginated listing
local result = app.integrations.caddy.list_certificates({
page = 1,
per_page = 50
})
get_certificate
Get detailed information about a specific TLS certificate.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
certificate_id | string | yes | The certificate identifier |
Examples
local result = app.integrations.caddy.get_certificate({
certificate_id = "cert-abc123"
})
print("Domain: " .. result.domain)
print("Issuer: " .. (result.issuer or "N/A"))
print("Valid from: " .. (result.not_before or "N/A"))
print("Expires: " .. (result.not_after or "N/A"))
print("SANs: " .. table.concat(result.sans or {}, ", "))
get_current_user
Get details of the currently authenticated Caddy user.
Parameters
None.
Examples
local result = app.integrations.caddy.get_current_user({})
print("User: " .. result.username .. " (" .. result.email .. ")")
Multi-Account Usage
If you have multiple Caddy accounts configured, use account-specific namespaces:
-- Default account (always works)
app.integrations.caddy.function_name({...})
-- Explicit default (portable across setups)
app.integrations.caddy.default.function_name({...})
-- Named accounts
app.integrations.caddy.production.function_name({...})
app.integrations.caddy.staging.function_name({...})
All functions are identical across accounts — only the credentials differ.
Raw agent markdown
# Caddy — Lua API Reference
## list_sites
List all Caddy sites.
### Parameters
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `page` | integer | no | Page number for pagination (default: 1) |
| `per_page` | integer | no | Number of sites per page (default: 20) |
### Examples
```lua
-- List all sites
local result = app.integrations.caddy.list_sites({})
for _, site in ipairs(result.sites) do
print(site.name .. " (" .. site.status .. ") - " .. site.id)
end
```
```lua
-- Paginated listing
local result = app.integrations.caddy.list_sites({
page = 2,
per_page = 10
})
```
---
## get_site
Get detailed information about a specific Caddy site.
### Parameters
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `site_id` | string | yes | The site identifier |
### Examples
```lua
local result = app.integrations.caddy.get_site({
site_id = "abc123"
})
print("Site: " .. result.name)
print("Status: " .. result.status)
```
---
## create_site
Create a new site in Caddy.
### Parameters
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `name` | string | yes | The domain name for the site (e.g., "example.com") |
| `config` | object | no | Optional site configuration (Caddy JSON config or key-value pairs) |
### Examples
```lua
-- Create a basic site
local result = app.integrations.caddy.create_site({
name = "mysite.example.com"
})
print(result.message)
print("Site ID: " .. result.id)
```
```lua
-- Create a site with custom config
local result = app.integrations.caddy.create_site({
name = "mysite.example.com",
config = {
auto_https = "on",
log_format = "json"
}
})
```
---
## delete_site
Delete a site from Caddy. This action is irreversible.
### Parameters
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `site_id` | string | yes | The site identifier to delete |
### Examples
```lua
local result = app.integrations.caddy.delete_site({
site_id = "abc123"
})
print(result.message)
```
---
## list_certificates
List all TLS certificates managed by Caddy.
### Parameters
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `page` | integer | no | Page number for pagination (default: 1) |
| `per_page` | integer | no | Number of certificates per page (default: 20) |
### Examples
```lua
-- List all certificates
local result = app.integrations.caddy.list_certificates({})
for _, cert in ipairs(result.certificates) do
print(cert.domain .. " expires: " .. (cert.expires_at or "N/A"))
end
```
```lua
-- Paginated listing
local result = app.integrations.caddy.list_certificates({
page = 1,
per_page = 50
})
```
---
## get_certificate
Get detailed information about a specific TLS certificate.
### Parameters
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `certificate_id` | string | yes | The certificate identifier |
### Examples
```lua
local result = app.integrations.caddy.get_certificate({
certificate_id = "cert-abc123"
})
print("Domain: " .. result.domain)
print("Issuer: " .. (result.issuer or "N/A"))
print("Valid from: " .. (result.not_before or "N/A"))
print("Expires: " .. (result.not_after or "N/A"))
print("SANs: " .. table.concat(result.sans or {}, ", "))
```
---
## get_current_user
Get details of the currently authenticated Caddy user.
### Parameters
None.
### Examples
```lua
local result = app.integrations.caddy.get_current_user({})
print("User: " .. result.username .. " (" .. result.email .. ")")
```
---
## Multi-Account Usage
If you have multiple Caddy accounts configured, use account-specific namespaces:
```lua
-- Default account (always works)
app.integrations.caddy.function_name({...})
-- Explicit default (portable across setups)
app.integrations.caddy.default.function_name({...})
-- Named accounts
app.integrations.caddy.production.function_name({...})
app.integrations.caddy.staging.function_name({...})
```
All functions are identical across accounts — only the credentials differ. local result = app.integrations.caddy.list_sites({page = 1, per_page = 1})
print(result) Functions
list_sites Read
List all Caddy sites. Returns site IDs, domain names, status, and configuration details.
- Lua path
app.integrations.caddy.list_sites- Full name
caddy.caddy_list_sites
| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | no | Page number for pagination (default: 1). |
per_page | integer | no | Number of sites per page (default: 20). |
get_site Read
Get detailed information about a specific Caddy site, including its configuration, domain, and status.
- Lua path
app.integrations.caddy.get_site- Full name
caddy.caddy_get_site
| Parameter | Type | Required | Description |
|---|---|---|---|
site_id | string | yes | The site identifier. |
create_site Write
Create a new site in Caddy. Specify the domain name and optional configuration parameters.
- Lua path
app.integrations.caddy.create_site- Full name
caddy.caddy_create_site
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | The domain name for the site (e.g., "example.com"). |
config | object | no | Optional site configuration (Caddy JSON config or key-value pairs). |
delete_site Write
Delete a site from Caddy. This action is irreversible and will remove the site and its configuration.
- Lua path
app.integrations.caddy.delete_site- Full name
caddy.caddy_delete_site
| Parameter | Type | Required | Description |
|---|---|---|---|
site_id | string | yes | The site identifier to delete. |
list_certificates Read
List all TLS certificates managed by Caddy. Returns certificate IDs, domains, expiry dates, and status.
- Lua path
app.integrations.caddy.list_certificates- Full name
caddy.caddy_list_certificates
| Parameter | Type | Required | Description |
|---|---|---|---|
page | integer | no | Page number for pagination (default: 1). |
per_page | integer | no | Number of certificates per page (default: 20). |
get_certificate Read
Get detailed information about a specific TLS certificate, including domain, issuer, validity, and SANs.
- Lua path
app.integrations.caddy.get_certificate- Full name
caddy.caddy_get_certificate
| Parameter | Type | Required | Description |
|---|---|---|---|
certificate_id | string | yes | The certificate identifier. |
get_current_user Read
Get details of the currently authenticated Caddy user. Returns user ID, email, username, and account info.
- Lua path
app.integrations.caddy.get_current_user- Full name
caddy.caddy_get_current_user
| Parameter | Type | Required | Description |
|---|---|---|---|
| No parameters. | |||