Set includePartialMessages: true on SDK sessions so stream() emits
SDKPartialAssistantMessage (stream_event) carrying content_block_delta
events. chatStream() now yields actual token text as it is generated
instead of waiting for the complete response and fake-streaming it
with word-splits and delays.
This gives true token-by-token TTFT (~200ms first token) rather than
the previous 3-8s wait for the full response before any text appeared.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The Claude Agent SDK reuses sessions across conversations. When the
full system prompt was re-sent on subsequent turns wrapped in
[System instructions] tags, Claude flagged it as a prompt injection
attempt. Switch to XML-style tags (<context>, <conversation>) that
Claude recognises as structured prompt sections. Add <new_conversation/>
boundary marker to isolate reused sessions from prior context.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Claude Agent SDK yields complete assistant messages rather than
individual token deltas. This change splits the full text into 2-3
word groups and yields them as separate SSE chunks with small random
delays (25-60ms), giving a natural typing experience on the client.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SDK examples (Python, Node.js), API reference, model aliases,
streaming, conversations, self-hosting instructions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Traces: convLookup, formatPrompt, acquire, send, firstMsg,
stream, release, convStore — logged per request for profiling.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
K8s doesn't set HOME from Dockerfile USER directive. Mount
credential file at subpath to preserve debug/ directory.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
K8s runAsNonRoot requires numeric UID. Pin to 1001 in both
Containerfile and Helm chart deployment template.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Agent SDK writes debug logs to ~/.claude/debug/ which must
exist before session creation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Pool warmup requires Claude auth which isn't available in CI.
Check container stays alive instead of testing health endpoint.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Helm chart for deploying Axon LLM gateway with Valkey backing store,
Traefik ingress with TLS, and Claude auth volume mount.
CI workflow builds container image on push to products/axon/ and pushes
SHA-pinned tags to GHCR.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Website source and dispatch workflow moved to openova-private
for proper separation of proprietary marketing from open-source platform.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add contact-api Go service that sends email via Stalwart
- Form POSTs to /api/contact, email delivered to sales@openova.io
- Add phone number field
- No third-party dependencies
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace all "52" references with generic CNCF/open-source language
- Remove Solutions page (301 redirect to /platform), drop from nav
- Replace 2-phase provisioning section with Catalyst lifecycle overview
- Add Superset to Fabric across diagram, products, and components data
- Upgrade favicon with gradient version of brand mark
- Simplify pricing from 5-row add-on table to 3 clean cards (Support/Managed/Expert Hours)
- Remove vendor name-dropping (Red Hat, Datadog, Splunk, Auth0) from engagement and contact pages
- Fix contact form: remove broken Formspree, use mailto:sales@openova.io as primary
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1. Slide 2 (platform page): Give Guardian/Insights sidebars proper
border-radius and border matching center groups, add column gap,
remove body border-bottom
2. Slide 1 (hero): All product names use same 0.8125rem font size
(Guardian, Insights, Catalyst no longer smaller)
3. Relay and Catalyst: 2-line layout — product name on line 1,
concept + description on line 2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove min-height from body grid so sidebars match center height
- Give sidebars same border-radius (0.25rem) and border style as
all other blocks via base .lean-b styles
- Remove custom background/border overrides — sidebars now use
the same color-mix pattern as Cortex, Fabric, Pilot, etc.
- Add grid gap for consistent spacing between columns
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The separator lines between Guardian↔Cortex and Insights↔Fabric
columns were causing a double-layer visual effect. Restore the
subtle tint backgrounds and remove the border-right/border-left
lines instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove semi-transparent backgrounds from Guardian/Insights sidebars
across all modes (hero lean, platform interactive, static carousel)
- Remove dashed dividers between core and a-la-carte sections
(a-la-carte items exist within core groups like Spine)
- Fix top alignment: reduce center padding so Cortex/Fabric aligns
with Guardian/Insights
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Restored min-height:20rem on lean-arch body so flex rows have space
to distribute (flex-basis:0% needs explicit container height)
- Removed min-height:0 from rows so content can't be crushed
- Removed Bootstrap Wizard/Lifecycle Manager chips per feedback
- Removed unused catalyst-modules CSS
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hero lean blocks:
- Relay: flex:0 auto (content-height only), horizontal layout, no desc
- Catalyst: added description + Bootstrap Wizard/Lifecycle Manager chips
- K8s bar and Cloud row: increased sizing to match slide 2 proportions
- Mobile: all rows use natural height (no overlap)
- Removed min-height:24rem on body grid (content-driven sizing)
Platform page:
- Default view now shows Concepts (was Tech Names)
- Toggle renamed: "Concepts" | "Products"
- All chips and labels render concept names on initial load
- arch--concepts class set by default for correct hover behavior
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix Guardian/Insights sidebar vertical centering by keeping count
absolutely positioned instead of margin-top:auto flex hack
- Fix Catalyst/K8s/Cloud bar sizing with proper padding/min-height
- Add concepts↔tech names toggle carousel to platform page
(uses data attributes + JS to swap chip text and labels)
- Concepts mode reverses hover overlay to show tech names
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Slide 1 (lean blocks):
- Column proportions match slide 2: 5rem | 1fr | 5rem for Guardian/Center/Insights
- Row heights proportional via flex values (10/5/8/4 matching component counts)
- All text vertically and horizontally centered
- Added 1-line description inside each block
- Fixed Fabric to "Data & Integration"
- Larger font (0.8125rem) for product family names (CORTEX, SPINE, etc.)
- Each text level has uniform font size within its level
- K8s bar and Cloud providers as separate rows matching slide 2
- Sidebar colors match slide 2 exactly
Platform page:
- Interactive mode now uses arch--static arch--view-2 CSS classes
- Renders 100% identical to slide 2 (same deterministic chip grids,
spacing, min-height, sidebar colors)
- Hover-flip enabled (no arch--no-interact class)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rewrite Axon SaaS LLM gateway with three core changes:
1. Session pool acquire/release pattern — sessions stay alive and are
reused across requests instead of killed after one use. Turn counting
with automatic recycling after 200 turns.
2. Valkey-backed conversation store — all conversation state (messages,
metadata, TTL) lives in Valkey, not filesystem. Sessions are stateless
workers; any session can serve any conversation.
3. 100% OpenAI /v1/chat/completions compatibility — accepts every OpenAI
request parameter (temperature, top_p, stop, frequency_penalty,
presence_penalty, logit_bias, logprobs, seed, tools, tool_choice,
response_format, stream_options, max_completion_tokens, user, store,
metadata). Response shape matches OpenAI exactly: chatcmpl-* id,
system_fingerprint, logprobs:null, refusal:null, usage chunk in
streaming. OpenAI model names (gpt-4o, gpt-4) auto-mapped to Claude.
Axon extension: conversation_id field for multi-turn conversations
backed by Valkey with 7-day TTL. GET /v1/conversations/:id for history.
Includes E2E test suite (67 tests, scripts/e2e-test.sh).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Defines OpenOva's business positioning, product family (OpenOva, Cortex,
Synapse, Fingate, Specter), revenue model (per-vCPU-core with ELA/PAYG),
competitive landscape, persona-based messaging, banking-first GTM strategy,
expert network, migration program, and growth roadmap.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Persistent context document covering:
- Final building blocks table
- Critical architecture decisions (Cilium, Gitea, k8gb, etc.)
- OpenOva positioning and value proposition
- Bootstrap modes and architecture model
- Monorepo consolidation (2026-02-08)
- Core application architecture
- AI Hub meta-platform
- All key decisions and principles
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove hierarchical grouping (networking/, security/, etc.) and use flat
structure for all 41 platform components.
Changes:
- All components now directly under platform/ (no subfolders)
- AI Hub components moved from meta-platforms/ai-hub/components/ to platform/
- Open Banking components (lago, openmeter) moved to platform/
- meta-platforms/ now only contains README files that reference platform/
- Open Banking custom services remain in meta-platforms/open-banking/services/
Structure:
- platform/ (41 components, flat)
- meta-platforms/ai-hub/ (README only, references platform/)
- meta-platforms/open-banking/ (README + 6 custom services)
All documentation links updated.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Harbor moved from storage/ to registry/ (artifact management, not storage)
- Kyverno moved from security/ to policy/ (policy engine for validation,
mutation, generation - broader than just security)
Updated structure:
- platform/registry/harbor/
- platform/policy/kyverno/
All documentation links updated accordingly.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>