Docs / Getting started
Sending logs to Rudow
There are three ways to get logs into Rudow — pick whichever fits your stack. All three send data to the same ingest API, so you can mix and match across services. Once your logs are in, connect an MCP client to query them from any AI tool.
Integration methods
Direct API
HTTP
Any language or custom integration — POST JSON to the ingest endpoint.
Node.js SDK
npm ↗@rudow/node-logger
Node.js/TypeScript backends. Batching, plus Pino and Winston transports.
Python SDK
PyPI ↗rudow
FastAPI, Flask, Django, or any Python backend.
MCP server
Model Context Protocol
Query your logs and metrics from Claude, Cursor, Windsurf or your own agent.
1. Get an ingest API key
- Go to Settings → Projects in the Rudow dashboard.
- Select your project.
- Under API keys, click Create key.
- Copy it — it starts with
alog_.
2. Direct API (any language)
Send a POST request to the ingest endpoint with your API key and one or more log entries.
- Endpoint:
https://api.rudow.ai/v1/ingest - Auth:
Authorization: Bearer <your-alog_-key> - Body:
{ "entries": [ ... ] } — up to 1000 entries per request
curl -X POST https://api.rudow.ai/v1/ingest \
-H "Authorization: Bearer <your-alog_-key>" \
-H "Content-Type: application/json" \
-d '{
"entries": [
{
"level": "info",
"message": "server started",
"source": "backend",
"attributes": { "port": 8080 }
}
]
}'Entry fields
| Field | Type | Required | Notes |
|---|---|---|---|
| message | string | yes | The log message. Min length 1. |
| level | enum | no | One of debug, info, warn, error, fatal. Defaults to info. |
| source | string | no | Free-form label, e.g. "backend", "worker". Defaults to "backend". |
| timestamp | ISO 8601 string | no | Defaults to receipt time if omitted. |
| attributes | object | no | Any structured metadata to attach to the entry. |
3. Node.js SDK
View on npm@rudow/node-logger batches log entries and ships them to the ingest API. It also exports a Pino transport and a Winston stream transport for services already using those loggers.
npm install @rudow/node-loggerimport { createLogger } from "@rudow/node-logger";
const logger = createLogger({
apiKey: process.env.RUDOW_API_KEY!, // your project's ingest key
});
logger.info("server started", { port: 8080 });
logger.error("checkout failed", { orderId, status: 500 });Set RUDOW_API_KEY in your environment (e.g. .env) rather than hardcoding the key.
4. Python SDK
View on PyPIrudow batches log entries and ships them to the ingest API. Works with any Python backend (FastAPI, Flask, Django, etc.).
pip install rudowimport os
from rudow import create_logger
logger = create_logger({
"api_key": os.environ["RUDOW_API_KEY"],
})
logger.info("Server started", {"port": 8000})
logger.error("Database connection failed", {"error": "ECONNREFUSED"})Read the key from an environment variable (e.g. os.environ['RUDOW_API_KEY']) rather than hardcoding it.
5. MCP server
Ingestion gets logs in; MCP gets answers out. Rudow exposes a Model Context Protocol server so Claude Code, Claude Desktop, Cursor, Windsurf or your own agent can query your logs and metrics directly — with scoped, revocable keys.
Connecting an MCP client
Create a key, wire up the config, and see every tool the assistant gets.
6. Verify it's working
Go to your project's Logs tab in the Rudow dashboard — entries should appear within a few seconds of being sent. If nothing shows up, check:
- The API key is correct and belongs to the right project.
- Your request body matches the shape above (entries must be a non-empty array).
- You're getting a 2xx response, not a 401 (bad/missing key) or 400 (validation error).
Ready to send your first log?
Create a project, mint an ingest key, and you're live in minutes.