The autonomous agent
The assistant does what you ask, one step at a time. The autonomous agent does the whole investigation itself. You give it a goal, a symptom, or just "find what's broken", and it runs on its own until it has a root cause.
It is environment-agnostic and strictly read-only. Drop it on any backend with whatever access you've wired up (a log source, a base URL, the browser's past runs) and it investigates without a recipe, without a map, and without ever changing a thing.
How it works
Given a goal, the agent loops on its own:
- Hypothesize from the symptom.
- Gather evidence with read-only tools: search the logs, probe a service (
tcp/http/dns/tls),GETan endpoint, read a past browser run or a filed issue. - Follow the trail across layers, a UI symptom, to the failing request, to its
trace_idin the logs, to the backend error, to an upstream service, then probe that service. It doesn't trust the first error (an "auth error" is often a network error). - Discover the topology as it goes, the logs name the services, the probes reveal what's reachable. It builds the map from what it sees.
- Report a structured root cause: the layer, the cause, the suggested fix, a confidence, the evidence trail, and the topology it found. If it can't be sure, it says so and tells you what access or data it would need to go further.
Fire it
From the assistant, just ask, it launches the agent for you:
Investigate why checkout returns 500.
Something's broken in signup, find it.
Why can't Duo reach the model server?Or hit the endpoint directly, it streams the investigation live (Server-Sent Events: thought, tool_call, tool_result, and a final report):
curl -N -X POST https://app.upliftr.io/api/v1/investigate \
-H "Authorization: Bearer $UPLIFTR_TOKEN" \
-H "content-type: application/json" \
-d '{"goal":"checkout returns 500 intermittently"}'Read-only, always
Every tool the agent has only observes, it searches logs, opens connections, resolves names, and reads past runs. It never mutates your code, data, or infrastructure, and it never asks you to. That's the whole point: a root-cause agent you can safely point at production.
What it can reach
The agent is as capable as the access you give it: connect a log source so it can correlate trace_ids, and it can probe your infra and read your browser runs. The more it can see, the deeper it goes, all of it read-only.