Log server for you and your agents

Your agents can find the cause when they can see your logs

Ninjalog is a fast log server, hosted in the EU, built to be used by Claude, Codex and you.

We use it for our own production apps, with millions of weekly page views.

What your agent can do

What your agent can do with your logs

Ask

Ask about an incident, or for a number. “Why are we getting ClickHouse errors in production?” Your agent searches across every service and comes back with the cause. “What was p95 on /api/search yesterday afternoon?” It gets you one number, not a dump of logs.

Set up and triggered

Connect Ninjalog in Claude or Codex once, with a browser sign-in. You ask.

ClickHouse errors in production
Why are we getting ClickHouse errors in production?
›Used Ninjalog · ran 5 searches

Since 09:14 today, ClickHouse has rejected 1,284 queries with TOO_MANY_SIMULTANEOUS_QUERIES. All of them come from stats-worker.

They started four minutes after this morning’s deploy of stats-worker. Since then it sends one query per league instead of one batched query, about 40 at once against a limit of 32.

The shop itself is fine. The errors only delay the hourly stats job.

Want me to cap the worker at 8 concurrent queries, or revert the deploy?

Morning brief

Every morning your agent reads yesterday’s logs next to your analytics and GitHub issues, writes you a short summary, and opens an issue when something real broke. It’s useful because it reads your logs next to everything else it knows about your business.

Set up and triggered

A scheduled agent. You write the prompt; Ninjalog supplies the logs.

Morning brief
Scheduled task · every day at 07:00
Read yesterday’s logs in Ninjalog next to our analytics and GitHub issues. Write me a short brief, and open an issue for anything that really broke.
›Used Ninjalog · 4 projects
›Used analytics
›Used GitHub · opened issue #214

Good morning. One thing needs your attention. The rest was fine.

Tidewater Bikes, Wednesday 00:00 to 23:59.

shop/productionNeeds attention

Checkout returned 502s for 11 minutes from 14:10. The card service ran out of connections (32 of 32 in use) and payment calls timed out behind it. About 140 orders failed; 96 of those customers retried and got through.

Opened tidewater/shop #214 bug
Checkout times out when the card-service connection pool is fullTimeline, the three queries behind it, and a suggested fix: raise the pool to 64 and release connections on timeout.
booking/productionTraffic spike

Requests were 3.4 times a normal Wednesday between 19:00 and 21:00, after the autumn service email went out. There were no errors, and p95 stayed under 240 ms.

shop/stagingIn development

Two deploys. 1,204 warnings, all from the new PriceRule migration, which logs a deprecation warning for every cart. Nothing is broken, and none of it reached production.

mailerQuiet

Sent 8,912 emails, 3 bounced. Nothing to do.

Should I try the pool change on staging and run the checkout tests?

Alert starts an agent

When an alert fires, an agent starts looking before you do.

Set up and triggered

A Ninjalog alert calls a webhook that starts your workflow, such as a GitHub Action.

Checkout alert
Started by a Ninjalog alert · 02:47
Ninjalog alert: checkout errors, more than 50 in 5 minutes. Find out what’s going on and tell #ops.
›Used Ninjalog · ran 4 searches
›Used Slack · posted in #ops

I looked at the 15 minutes before the alert.

  • All errors are on /checkout/confirm, which returns 500 when the payment provider times out.
  • The provider’s response time went from 0.3 s to over 10 s at 02:41. Nothing changed on our side: no deploy since yesterday, traffic normal.
  • It looks like an outage at the provider, not a bug in our code.

I posted this in #ops and will check again in 15 minutes.

Setup

Your agent sets it up

Connect Ninjalog to Claude or Codex once, with a browser sign-in. You choose which projects it can reach. Then ask it to set up logging for an app:

  1. It creates the project and an ingest token.

  2. It adds the shipper config to your repo, because it already has your code.

  3. It writes a parser if your log format needs one.

  4. It builds a dashboard and saves the alerts you ask for.

  5. You review the diff and deploy. Your logs arrive a minute later.

You can also do all of this yourself in Ninjalog. Every step has a screen.

Getting logs in

No code changes

Your apps keep logging the way they do now. Add a few lines of configuration to the log shipper you already run, and your logs start arriving in Ninjalog.

Ninjalog reads JSON, logfmt and Traefik access logs on its own. For any other format, ask your agent to teach Ninjalog to read it.

  • Vector
  • Fluent Bit
  • OpenTelemetry
  • Filebeat
  • curl
Built for agents

We work hard so your agents don’t waste time or tokens

Every token your agent spends on a log server is a token it doesn’t spend on your work. So we keep tuning Ninjalog for agents. One request can run a whole series of queries, so your agent makes fewer round trips and gets to the answer sooner. Results come back in a form agents read well, so they don’t have to convert timestamps or try again with a different query. In our tests, agents needed less than half the tokens for the same work compared with other log platforms.

Because Ninjalog does more of the heavy lifting, a smaller, cheaper model can take on harder questions than it can with other log platforms.

For you

And when you want to look yourself

Search is super fast, and it keeps going: results keep updating as new events arrive, so you can watch a deploy or an incident as it happens. Dashboards are live the same way.

Our query language is a subset of SPL. It’s simple to use, and your agent already knows it.

An alert is just a search with a condition, like “more than 50 errors in five minutes”. You write it the same way you search.

Want to try it?

We let people in from the waiting list a few at a time, and we pick by use case. The more you tell us about your project, the closer to the front you get.

What helps us pick
  • What you run
  • Which agents you use
  • How you deal with logs today
  • What you’d love us to solve for you

Curious? Join us on Discord

When we invite you, you get a time-limited free trial.

We use your name and email to invite you, and we may send you updates while you’re on the waiting list. Write to to be removed.