freshcrate
Skin:/
Home > AI Agents > latitude-llm

latitude-llm

Latitude is the open-source agent engineering platform

Why this rank:Strong adoptionRecent releaseHealthy release cadence

Description

Latitude is the open-source agent engineering platform

README

Open-Source AI Engineering Platform

Observability and evaluations first, then an eval-driven reliability loop to continuously improve prompts.

Docsย ย ยทย ย  Slackย ย ยทย ย  X

Warning

You are viewing the Latitude v2 Alpha branch (main). This branch is in active development and is not ready for production use. APIs, features, and data formats may change without notice.

For production use, please use the stable release on the latitude-v1 branch.

Latitude demo โ€” observability, evals, and prompt management

๐ŸŒˆ Why Latitude?

Latitude is an open-source platform for building and operating LLM features in production.

Most teams adopt Latitude in stages: start by instrumenting your existing LLM calls to get observability and evaluation coverage, then move into a reliability loop that turns production failures into repeatable fixes.

Start with observability + evaluations:

  • Observability โ†’ capture prompts, inputs/outputs, tool calls, and latency/token usage/cost from real traffic
  • Prompt playground โ†’ reproduce runs, iterate with real inputs, version changes, and publish to the AI Gateway
  • Datasets โ†’ curate real examples for batch testing and regression suites
  • Evaluations โ†’ built-in evals, LLM-as-judge, and human-in-the-loop scoring
  • Experiments โ†’ compare models/providers and prompt versions with measurable results

Grow into the reliability loop:

  • Annotations โ†’ turn human judgment into a signal you can track and optimize
  • Issue discovery โ†’ cluster failures into recurring issues and failure modes
  • Automatic evals โ†’ convert issues into continuous tests that guard releases
  • Prompt optimizer (GEPA) โ†’ search prompt variations against your eval suite and reduce recurring failures

Latitude Telemetry works with most model providers and frameworks out of the box, and can be extended for custom integrations. See the full integration list (including OTLP ingest).

๐Ÿ“š Table Of Contents

โšก Quick start

Latitude is available as a managed cloud product or as a self-hosted deployment:

  1. Latitude Cloud: fully managed.
  2. Latitude Self-Hosted: run the open-source distribution on your own infrastructure.

Choose the option that best fits your needs and follow the corresponding instructions below.

Latitude Cloud

To get started with Latitude, follow these steps:

  1. Sign up โ†’ Create an account at latitude.so and create a project.
  2. Instrument โ†’ Add the telemetry SDK (recommended) or export OTLP traces to compatible backend.
  3. Evaluate โ†’ Create datasets and evals to measure quality and catch regressions.
  4. Manage + ship โ†’ Version prompts/agents, publish changes, and deploy via the gateway.
  5. Optimize โ†’ Use eval-driven optimization to reduce recurring failures.

For more details on each step, see our documentation or join the community.

Latitude Self-Hosted

Follow the instructions in the self-hosted guide to get started with Latitude Self-Hosted.

After setting up Latitude Self-Hosted, you can follow the same steps as in the Latitude Cloud guide to create, test, evaluate, and deploy your prompts.

๐Ÿ‘ฅ Community

The Latitude community is on Slack, where you can ask questions, share feedback, and show what you're building.

๐Ÿค Contributing

Contributions are welcome. For an overview of the repo and its architecture, see the contributor guide.

If you want to help, join the Slack community, open an issue, or submit a pull request.

๐Ÿ“„ License

Latitude is licensed under the LGPL-3.0.

Alternatively, we offer a more permissive commercial license for those who need it. Please contact us at licensing@latitude.so for more information.

๐Ÿ”— Links

Made with love by the Latitude Team

Release History

VersionChangesUrgencyDate
pi-telemetry-0.0.2 ### Fixed - Telemetry export no longer blocks Pi's agent lifecycle at the end of a run. Trace uploads are dispatched asynchronously after span construction so the TUI can leave the working/loading state immediately. - Failed telemetry uploads are now silent unless debug logging is enabled, avoiding direct stderr writes that can disturb Pi's interactive terminal layout. High5/21/2026
openclaw-telemetry-cli-0.0.7 Initial release of the standalone installer CLI. The runtime split that landed in `@latitude-data/openclaw-telemetry` 0.0.6 ([PR #2920](https://github.com/latitude-dev/latitude-llm/pull/2920)) deleted the bundled CLI from the runtime package so that runtime would pass OpenClaw 2026.4.25+'s install-time `dangerous-exec` security scan. The 0.0.6 manual install flow asked operators to run six `openclaw config set` commands plus a hand-edited `plugins.allow` array; this package brings the one-shot High4/29/2026
openclaw-telemetry-0.0.1 ### Added - Initial release. OpenClaw plugin that streams every agent run to Latitude as OTLP traces by subscribing to OpenClaw's typed `llm_input` / `llm_output` / `before_tool_call` / `after_tool_call` / `agent_end` hooks. - Per-run state accumulator keyed by `runId` that pairs LLM input/output into single calls, nests tool invocations under their parent LLM call, and handles out-of-order tool events defensively. - OTLP span tree with three span kinds โ€” `interaction` (per agent run), `llm_reHigh4/24/2026
claude-code-telemetry-0.0.6 ### Fixed - **Fixed URL domain** from `app.latitude.so` to `console.latitude.so`. High4/21/2026
claude-code-telemetry-0.0.5 ### Changed - **Install UX rewritten with [`@clack/prompts`](https://www.npmjs.com/package/@clack/prompts)** โ€” the interactive wizard now opens with a proper welcome banner, renders each prompt inside a gutter with a description line explaining the field + the relevant Latitude URL to fetch it from, masks the API key input with `โ€ข` as you type, and ends with a "Next step" panel plus a direct link to your project's trace view. Spinners stream in as each install step completes. - **README restruHigh4/20/2026
claude-code-telemetry-0.0.4 ### Added - **Interactive `install` wizard** โ€” `npx -y @latitude-data/claude-code-telemetry install` now prompts for `LATITUDE_API_KEY` and `LATITUDE_PROJECT`, merges them into `~/.claude/settings.json` under `env`, and installs the Stop-hook entry if missing. On macOS it also offers to set `BUN_OPTIONS` via `launchctl` and persist it with a `~/Library/LaunchAgents/so.latitude.claude-code-telemetry.plist`. Existing values are shown as defaults (API keys masked); a backup of `settings.json` is High4/20/2026
claude-code-telemetry-0.0.2 ### Added - **Workspace and git context on every span** โ€” the hook now reads the Claude Code session's `cwd` and derives `workspace.name` / `workspace.path`, `git.branch` / `git.commit` / `git.repo`, `claude_code.version`, `host.user`, and `hook.event`. The workspace name is attached as a span tag (`latitude.tags`); the full set is attached as shared trace metadata (`latitude.metadata`) on every emitted span so traces can be sliced by repo, branch, or CLI version in the Latitude UI. - **Full cHigh4/20/2026
typescript-telemetry-3.0.0-alpha.5 ### Fixed - `capture()` now starts a new Latitude root trace when called under an active non-Latitude span, so wrapper spans such as workflow-level capture names are preserved instead of being absorbed into foreign traces. - Nested Latitude `capture()` calls still reuse the existing Latitude-owned trace and merge context as before. High4/17/2026
claude-code-telemetry-0.0.1Package updates and improvementsHigh4/17/2026
typescript-telemetry-3.0.0-alpha.4 ### Fixed - **Provider SDK version coupling** โ€” moved provider SDK packages (`openai`, `@anthropic-ai/sdk`, etc.) from `optionalDependencies` to `devDependencies` so they are no longer installed alongside `@latitude-data/telemetry`. Users can now use any compatible version of their provider SDK without conflicts. - **Bumped all Traceloop instrumentations to `^0.25.0`** โ€” notably extends OpenAI support from `>=4 <6` to `>=4 <7`, fixing auto-instrumentation for users on `openai@6.x`. Medium4/14/2026
typescript-telemetry-3.0.0-alpha.3 ### Added - **`serviceName` on `LatitudeSpanProcessor` and `initLatitude()`** โ€” optional `LatitudeSpanProcessorOptions.serviceName` / `InitLatitudeOptions.serviceName` sets OpenTelemetry **`service.name`** on each span so Latitude ingest can attribute telemetry to your service. When using `initLatitude()`, the value is also applied to the `NodeTracerProvider` resource (falling back to `npm_package_name` or `"unknown"` when omitted). Medium4/7/2026
typescript-telemetry-3.0.0-alpha.2 ### Changed - OpenTelemetry peer stack upgraded to align with **@opentelemetry/sdk-trace-node 2.6** and **@opentelemetry/exporter-trace-otlp-http / instrumentation 0.213** (previously 1.x / 0.57), so `LatitudeSpanProcessor` and related types match apps using **@opentelemetry/sdk-node** 0.213+. ### Fixed - `initLatitude()` and examples now use `resourceFromAttributes()` instead of `new Resource()` (OpenTelemetry JS 2.x API). - Span filtering reads `ReadableSpan.instrumentationScope` instead oMedium4/7/2026
typescript-telemetry-3.0.0-alpha.1 ### Breaking Changes - **Complete SDK re-architecture** โ€” monolithic `Telemetry` class replaced with modular, composable API - **New bootstrap API** โ€” `initLatitude()` replaces `new Telemetry()` as primary entry point - **`capture()` no longer creates spans** โ€” now only attaches context to spans created by auto-instrumentation - **Context propagation changed** โ€” uses OpenTelemetry's native Context API instead of baggage - Removed manual instrumentation (`telemetry.tracer` still available via aMedium4/2/2026
typescript-telemetry-3.0.0-alpha.0 ### Breaking Changes - Constructor now requires `projectSlug` as second argument - `capture()` no longer takes `path`/`projectId` โ€” takes `tags`/`metadata`/`sessionId`/`userId` instead - Removed opinionated span methods (`span.completion()`, `span.tool()`, etc.) โ€” use `telemetry.tracer` directly - Removed `rosetta-ai` dependency - Env var renamed from `GATEWAY_BASE_URL` to `LATITUDE_TELEMETRY_URL` ### Added - `telemetry.tracer` exposes raw OTel Tracer for custom span creation - `capture()` cMedium4/1/2026
python-telemetry-3.0.0a0 ### Breaking Changes - Constructor now requires `project_slug` as second argument - `capture()` no longer takes `path`/`project_id` โ€” takes `tags`/`metadata`/`session_id`/`user_id` instead - Removed opinionated span methods (`span.completion()`, `span.tool()`, etc.) โ€” use `telemetry.tracer` directly - Removed `GatewayOptions` and `InternalOptions` โ€” SDK reads `LATITUDE_TELEMETRY_URL` env var directly - Removed `SpanType`, `LogSources`, `SpanKind`, `SpanStatus`, `SPAN_SPECIFICATIONS` ### AddedMedium4/1/2026
typescript-telemetry-2.0.4 ### Changed - `capture()` now propagates `path`, `project`, `commit`, and `conversation` references through baggage so child spans inherit the same metadata.Low2/26/2026
python-telemetry-2.0.4 ### Changed - `capture()` now writes prompt reference fields into baggage so child spans inherit `path`, `project`, `commit`, and `conversation` metadata.Low2/26/2026
typescript-sdk-5.7.0 ### Added - Bumped PromptL to 0.11.0Low2/25/2026
typescript-sdk-5.6.0 ### Added - Added `prompts.delete(path, options?)` method to soft-delete a document/prompt from a draft project version.Low2/23/2026
typescript-sdk-5.5.0 ### Added - Added `messages` parameter to `prompts.run()` method. This allows appending any kind of messages to the conversation after the compiled prompt. Note: This is not compatible with the `<step>` feature of PromptL. ### Deprecated - The `userMessage` parameter in `prompts.run()` is now deprecated. Use the `messages` parameter instead. The `userMessage` parameter will be removed in a future version.Low2/17/2026
typescript-telemetry-3.0.0-beta.0 ### Changed - Marked the 3.x line as a beta prerelease so stable users stay on 2.x until 3.x is production-ready. - Added `telemetry.context.setAttributes()` to attach baggage attributes once and propagate trace metadata to child spans through context. - Latitude baggage keys are normalized to snake_case automatically (`latitude.documentUuid` -> `latitude.document_uuid`). ### Removed - Removed prompt/chat/external span option aliases (`documentLogUuid`, `promptUuid`, `versionUuid`, `source`,Low2/17/2026
python-telemetry-3.0.0b0 ### Changed - Marked the 3.x line as a beta prerelease so stable users stay on 2.x until 3.x is production-ready. - Added `telemetry.context.set_attributes()` to set baggage attributes once and propagate trace metadata to child spans. ### Removed - Removed manual instrumentation option aliases for prompt/chat/external/completion spans (including `documentLogUuid`, `promptUuid`, `versionUuid`, and related fields). Pass trace metadata with `attributes` or context baggage instead.Low2/17/2026
typescript-telemetry-3.0.0 ### Changed - Added `telemetry.context.setAttributes()` to attach baggage attributes once and propagate trace metadata to child spans through context. - Latitude baggage keys are normalized to snake_case automatically (`latitude.documentUuid` -> `latitude.document_uuid`). ### Removed - Removed prompt/chat/external span option aliases (`documentLogUuid`, `promptUuid`, `versionUuid`, `source`, and related fields) from manual instrumentation options; pass these via `attributes` or `context.setALow2/17/2026
python-telemetry-3.0.0 ### Changed - Added `telemetry.context.set_attributes()` to set baggage attributes once and propagate trace metadata to child spans. ### Removed - Removed manual instrumentation option aliases for prompt/chat/external/completion spans (including `documentLogUuid`, `promptUuid`, `versionUuid`, and related fields). Pass trace metadata with `attributes` or context baggage instead.Low2/17/2026
typescript-telemetry-2.0.2 ### Fixed - Bump Rosetta AI versionLow2/9/2026
typescript-telemetry-2.0.1### Fixed - Move Rosetta AI to dependencies ## [2.0.0] - 2026-02-04 ### Added - Manually instrumented completions now support any provider messages - The manual instrumentation now exports compliant GenAI messagesLow2/9/2026
typescript-telemetry-1.1.1 ### Fixed - Disabled `enrichTokens` for OpenAI and TogetherAI instrumentations to fix failures when using `stream: true`Low2/2/2026
typescript-sdk-5.4.1 ### Fixed - Re-exported `LogSources` from shared constants to keep SDK log source values aligned with the API.Low2/2/2026
typescript-sdk-5.4.0 ### Changed - Replaced `node-fetch` with native `fetch`. This reduces bundle size and improves abort signal handling. Requires Node.js 18+ (which has been the minimum supported version since Node.js 16 and 17 reached EOL). ### Fixed - Fixed abort signal propagation when cancelling streaming requests. The SDK now properly cancels in-flight requests when the abort signal is triggered.Low1/29/2026
cli-4.0.0 ### Changed - Prompts are now always stored as plain `.promptl` text files instead of JS/TS variables. ### Removed - Removed npm project detection and JS/TS/ESM format support. - Removed `verifyNpmProject` functionality. - Removed `npm` field from `latitude-lock.json` interface. - Removed JS/ESM import logic from `push`, `pull`, and `status` commands.Low1/23/2026
typescript-sdk-5.3.1 - Quick fix: move constants dependency to dev dependency since it's transpiled at build time and it cannot be required at runtime because we do not publish it.Low1/19/2026
typescript-sdk-5.3.0 ### Added - Added `mcpHeaders` parameter to `prompts.run()` and `prompts.chat()` methods for passing custom headers to MCP servers at runtime. Headers are keyed by integration name to support multiple MCP integrations per prompt. Example usage: ```typescript latitude.prompts.run('my-prompt', { parameters: { name: 'John' }, mcpHeaders: { myMcpIntegration: { 'customer-id': 'abc123' }, anotherMcp: { 'x-tenant-id': 'tenant-456' }, }, }) ```Low1/19/2026
typescript-sdk-5.2.3 - Removed deprecated span types from internal telemetry.Low12/31/2025
typescript-sdk-5.2.2 - Fixed `prompts.chat()` method was not including custom tools in the requestLow11/13/2025
typescript-sdk-5.2.1 - Exports MessageRole enum instead of the type onlyLow10/15/2025
typescript-sdk-5.2.0 Official release of v5.2.0. - Implements run background executions. Pass `background: true` to `prompts.run()` to run a prompt in the background. - Adds `runs.attach()` method to attach to running prompts. - Changes default stream option to true for prompts.run() and prompts.chat() methods. - Official pre-release of v5.2.0Low10/10/2025
typescript-sdk-5.2.0-beta.6 - Official pre-release of v5.2.0Low10/9/2025
typescript-sdk-5.2.0-beta.5 ### Changed - Now `prompts.run()`, `prompts.chat()` and `runs.attach()` methods, of the TypeScript SDK, have `stream` option set to `true` by defaultLow10/2/2025
typescript-sdk-5.2.0-beta.4 ### Fixed - Fixed `prompts.run()` method return types of the TypeScript SDKLow9/30/2025
typescript-sdk-5.1.0 ### Added - Add background option when running a promptLow9/19/2025
cli-3.0.0 ### Removed - Dropped CommonJS prompt support; CLI now writes `.js` default exports for npm projects.Low9/17/2025
cli-2.0.5 ### Changed - Prompts are default exports instead of named in js/ts projects to avoid name conflicts.Low9/9/2025
typescript-sdk-5.0.1 ### Changed Throw error if sdk fails to create versionLow9/9/2025
cli-2.0.4 ### Added - Adds `login` command to change the stored API key.Low9/8/2025
cli-2.0.3 ### Changed - Fixes escaping of special characters in prompts when pulled into JS/TS projects. [Unreleased]: https://github.com/latitude-dev/latitude-llm/compare/cli-2.0.3...HEAD [2.0.3]: https://github.com/latitude-dev/latitude-llm/releases/tag/cli-2.0.3Low9/8/2025
typescript-sdk-5.0.0 Official release of v5. Targets the new agent runtime, which introduces several improvements to agent performance and reliability. Breaking changes: - Agents now respond as regular prompts rather than in the custom `agentResponse` key.Low9/8/2025
typescript-sdk-5.0.0-beta.3 ### Added - Added `versions.getAll()` method to TypeScript SDK for retrieving all versions of a projectLow9/6/2025
typescript-sdk-5.0.0-beta.2 - Add userMessage to `run` method of the Typescript SDK in beta version. In the beta version of the SDK v5 we want to allow to run a prompt with a user message on it. We want this to allow prompts to be run like if in GPT where you can start asking something to a preconfigured AI. In this case could be a Latitude AI agent.Low8/25/2025
typescript-sdk-4.1.14## What's Changed - Package updates and improvementsLow8/22/2025

Dependencies & License Audit

Loading dependencies...

Similar Packages

uix-ai-agent๐Ÿค– Generate UI & UX flows for web and mobile apps using natural language prompts with UIX AI Agent, your intelligent design assistant.main@2026-06-07
vibe-replayTurn AI coding sessions into animated, interactive web replaysv0.2.3
20xSelf-improving Agent orchestrator for all knowledge workv0.0.94
agent-sdk๐Ÿค– Build transparent, message-first agents with efficient tool calls, planning, and multi-agent handoffs using the lightweight agent-sdk for Node.js.main@2026-06-06
letta-codeThe memory-first coding agentv0.27.6

More in AI Agents

@blockrun/franklinFranklin โ€” The AI agent with a wallet. Spends USDC autonomously to get real work done. Pay per action, no subscriptions.
hermes-agentThe agent that grows with you
awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.
e2bE2B SDK that give agents cloud environments