Commit Graph

46 Commits

Author SHA1 Message Date
e3mrah
6f81cc7e79 debug(axon): log msg.type from session.stream() to diagnose empty output 2026-03-12 15:51:42 +01:00
e3mrah
3f010b4cca fix(axon): fallback to complete assistant msg if stream_event not emitted 2026-03-12 15:49:07 +01:00
e3mrah
9aba8fe80c fix(axon): cast includePartialMessages to bypass older SDK type version 2026-03-12 15:45:23 +01:00
e3mrah
5113295960 feat(axon): enable real token streaming via includePartialMessages
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>
2026-03-12 15:34:24 +01:00
e3mrah
e783b9329c fix(axon): use XML tags in formatPrompt to prevent injection detection
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>
2026-03-11 21:26:30 +01:00
e3mrah
b911a74e7a feat(axon): progressive word-level streaming for chat completions
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>
2026-03-11 21:05:59 +01:00
e3mrah
8fb961c897 docs: rewrite Axon README as client integration guide
SDK examples (Python, Node.js), API reference, model aliases,
streaming, conversations, self-hosting instructions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 13:09:58 +01:00
e3mrah
643cdd9d29 Revert "feat: add request tracing spans to chat completion path"
This reverts commit a2685dd158.
2026-03-04 11:39:29 +01:00
e3mrah
a2685dd158 feat: add request tracing spans to chat completion path
Traces: convLookup, formatPrompt, acquire, send, firstMsg,
stream, release, convStore — logged per request for profiling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 11:20:54 +01:00
e3mrah
023ee6d5e4 chore: increase Axon resource limits for single-node overprovisioning
Axon: 2 CPU / 2Gi memory limits (50m/128Mi requests)
Valkey: 500m CPU / 256Mi memory limits (10m/32Mi requests)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 11:08:10 +01:00
e3mrah
97009daf59 fix: set HOME env and mount credentials at subpath
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>
2026-03-04 09:41:47 +01:00
e3mrah
5ff69bd41b fix: use fixed UID 1001 for axon user in container
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>
2026-03-04 09:39:09 +01:00
e3mrah
215ba69272 fix: create .claude/debug directory in Axon container
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>
2026-03-04 09:26:28 +01:00
e3mrah
6a84550466 fix: adjust CI smoke test for pool warmup blocking
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>
2026-03-04 09:24:44 +01:00
e3mrah
fe2e349246 feat: add Axon Helm chart and CI workflow
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>
2026-03-04 09:22:54 +01:00
e3mrah
9dd2ae7a76 docs: update CLAUDE.md — clarify public repo boundary
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 06:34:09 +01:00
e3mrah
4c1575596c chore: remove website (moved to private repo)
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>
2026-03-04 05:20:56 +01:00
talent-mesh
6c102928e7 feat: contact form sends email via own backend on K8s + Stalwart SMTP
- 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>
2026-03-03 22:27:07 +04:00
talent-mesh
5105ddc5e7 fix: contact form sends email via FormSubmit.co — no mailto popup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 22:21:46 +04:00
talent-mesh
5eec0d9a50 fix: trigger website deployment
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 22:04:24 +04:00
talent-mesh
42ea2597b1 infra: add website dispatch workflow for deployment
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 22:04:05 +04:00
talent-mesh
511bfaadf3 fix: website content overhaul — remove hardcoded counts, simplify taxonomy and pricing
- 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>
2026-03-03 22:03:30 +04:00
talent-mesh
0d7a894a92 fix: unify sidebar alignment, font sizes, and wide block layout
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>
2026-03-03 16:45:11 +04:00
talent-mesh
e0deb5ade6 fix: align Guardian/Insights sidebars with center blocks
- 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>
2026-03-03 16:22:57 +04:00
talent-mesh
49ad164329 fix: restore sidebar backgrounds, remove border lines instead
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>
2026-03-03 16:00:30 +04:00
talent-mesh
ebdfcf0132 fix: remove sidebar backgrounds and dividers from building blocks
- 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>
2026-03-03 15:00:04 +04:00
talent-mesh
186563f980 fix: remove outer border, uniform gaps, slate cloud bg — match slide 2
- Removed border/border-radius/overflow from .lean-arch (slide 2 has none)
- Removed border-bottom from body grid (no wrapper border)
- Uniform gap: 0.375rem in center column and rows (matches slide 2)
- Cloud providers: rgba(100,116,139,0.08) bg (was black var(--bg-secondary))
- K8s bar: full slide 2 styling (border, min-height, 0.75rem font)
- Cloud cells: 0.5rem padding, 0.625rem font, border around container
- Catalyst: proper border-radius, margin-top spacing
- Divider: removed extra margin (gap handles spacing)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 14:21:06 +04:00
talent-mesh
406c91b8f2 fix: restore min-height to prevent overlap, remove catalyst module chips
- 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>
2026-03-03 14:01:21 +04:00
talent-mesh
1e7c03edf9 fix: relay proportions, catalyst modules, platform concepts-first toggle
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>
2026-03-03 12:43:16 +04:00
talent-mesh
75c387f913 fix: lean blocks proportions, sidebar centering, platform page carousel toggle
- 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>
2026-03-03 12:15:10 +04:00
talent-mesh
af399981b3 fix: proportional lean blocks, descriptions, platform page identical to slide 2
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>
2026-03-03 11:44:16 +04:00
talent-mesh
458e344a3a fix: align slide 1 proportions and platform page layout with slide 2
Slide 1 (lean blocks):
- Block heights now proportional to component counts via flex values
  (Cortex/Fabric flex:10, Relay flex:5, Pilot/Spine flex:8, Surge/Silo flex:4)
- K8s bar and Cloud providers as separate rows (matching slide 2)
- Guardian/Insights sidebars use slide 2's exact background colors
- All text centered both vertically and horizontally

Platform page (BuildingBlocksDiagram interactive mode):
- Reverted to slide 2's 3-column layout (Guardian sidebar | center | Insights sidebar)
- Same structure: alacarte groups, divider, core groups, catalyst, k8s, clouds
- Hover-flip interactivity preserved on all chips
- Removed tab-based 2-slide carousel approach

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 11:04:55 +04:00
talent-mesh
8b0c789239 fix: align slide 1 lean blocks with slide 2 layout hierarchy
Redesign slide 0 to mirror the BuildingBlocksDiagram spatial layout:
- Guardian and Insights as full-height sidebars (matching viewMode=2)
- Cortex/Fabric as equal center columns, Relay full-width below
- Pilot/Spine proportioned 2:4, Surge/Silo equal below divider
- Catalyst as full-width bar, K8s + clouds footer
- Block sizes reflect component counts and importance
- Mobile: sidebars collapse to horizontal rows

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 10:08:38 +04:00
talent-mesh
dedfa55bea feat: add website with 2-table building blocks carousel and lean hero
- Full Astro website: homepage, platform, products, pricing, about, contact,
  engagement, exodus, solutions, docs pages
- BuildingBlocksDiagram: 2-slide manual carousel (Core 40 / A La Carte 25)
  with tab nav, dot nav, touch swipe, hover flip, uniform chips
- Hero slide 0: lean building blocks visual with group names inside blocks
  (2-line centrally aligned), mobile-optimized, minimal whitespace
- Containerfile + nginx config + K8s manifests for deployment
- Update project memory, CLAUDE.md, and business strategy docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 08:15:21 +04:00
talent-mesh
616914cf45 feat: OpenOva Axon — stateless SDK, Valkey state store, 100% OpenAI-compatible API
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>
2026-02-28 18:36:26 +04:00
talent-mesh
435f49738d feat: restructure platform to 52 components and 9 products
Technology forecast and strategic review restructure:
- Remove 13 components (backstage, mongodb, activemq, vitess, airflow, camel, dapr, superset, searxng, langserve, trino, lago, rabbitmq)
- Add 10 components (sigstore, syft-grype, nemo-guardrails, langfuse, reloader, matrix, ferretdb, litmus, livekit, coraza)
- Rename product: Synapse → Axon (SaaS LLM Gateway)
- Merge products: Titan + Fuse → Fabric (Data & Integration)
- New product: Relay (Communication)
- Replace Backstage with Catalyst IDP
- Replace MongoDB with FerretDB (MongoDB wire protocol on CNPG)
- Add supply chain security (Sigstore/Cosign, Syft+Grype)
- Add AI safety and observability (NeMo Guardrails, LangFuse)
- Add technology forecast 2027-2030 document
- Full verification pass: zero stale references across all docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 21:00:19 +00:00
talent-mesh
5d8174597d docs: AI-age component rationalization and gap analysis
Score all 55 platform components (0-100) for AI-age relevance,
identify ~15 candidates for removal (complexity absorber frameworks
like Temporal, Camel, Dapr, Airflow), and document 19 missing
components needed for AI operational tooling (Sigstore, SBOM,
NeMo Guardrails, LangFuse, OpenCost, Flagger, MLflow, etc).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 16:26:51 +00:00
talent-mesh
10245dff98 feat: ecosystem expansion to 55 components with license compliance
- Replace BSL-licensed components with open-source alternatives:
  Terraform→OpenTofu (MPL 2.0), Vault→OpenBao (MPL 2.0),
  Redpanda→Strimzi/Kafka (Apache 2.0), n8n→Airflow (Apache 2.0)
- Add 14 new platform components: activemq, camel, clickhouse, dapr,
  debezium, falco, flink, iceberg, opensearch, rabbitmq, superset,
  temporal, trino, vitess
- Rename meta-platforms/ to products/ with new product names:
  Cortex (AI Hub), Fingate (Open Banking), Titan (Data Lakehouse),
  Fuse (Microservices Integration)
- Update all documentation, READMEs, and cross-references

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 18:15:11 +00:00
talent-mesh
f64cd09b83 docs: add comprehensive business strategy and product naming
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>
2026-02-09 16:20:42 +00:00
talent-mesh
bb53df55bb docs: comprehensive Kyverno policy matrix for resilience and zero-trust
Cover 44 policies across generate (VPA, PDB, NetworkPolicy, ResourceQuota,
LimitRange), mutate (topology spread, anti-affinity, security context,
seccomp, Harbor image rewrite, priority class), and validate (resource
requests, health probes, min replicas, pod security restricted profile,
image supply chain, network zero-trust, RBAC hardening).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 05:29:05 +00:00
Emrah Baysal
f60f5b839a fix: remove duplicate README from .github/
GitHub was using .github/README.md for home page display instead of
the root README.md which has the updated hierarchical structure.
2026-02-09 03:45:39 +00:00
talent-mesh
92c97fc6f0 docs: add project memory for Claude Code sessions
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>
2026-02-08 16:59:27 +00:00
talent-mesh
0e6c347771 docs: add hierarchical grouping to platform components
- Organize 41 components into logical categories
- Split into Mandatory (Core Platform) and A La Carte sections
- Categories: Infrastructure, GitOps & IDP, Networking, Security,
  Policy, Observability, Scaling, Storage, Registry, Failover,
  Data, Identity, Communication, Monetization, AI/ML
- Underlying folder structure remains flat

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 16:08:24 +00:00
talent-mesh
c9d04a53b4 refactor: flatten platform/ structure (41 components)
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>
2026-02-08 15:19:48 +00:00
talent-mesh
49f8bbc84d refactor: move harbor to registry/, kyverno to policy/
- 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>
2026-02-08 11:53:21 +00:00
talent-mesh
535710289c feat: create OpenOva monorepo structure
Consolidate all component repos into a single monorepo:

- core/: Bootstrap + Lifecycle Manager application
- platform/: Individual component blueprints organized by category
  - networking/ (cilium, k8gb, external-dns, stunner)
  - security/ (cert-manager, external-secrets, vault, kyverno, trivy)
  - observability/ (grafana stack)
  - storage/ (minio, harbor, velero)
  - scaling/ (keda, vpa)
  - failover/ (failover-controller)
  - gitops/ (flux, gitea)
  - idp/ (backstage)
  - data/ (cnpg, mongodb, valkey, redpanda)
  - communication/ (stalwart)
  - iac/ (terraform, crossplane)
  - identity/ (keycloak)
- meta-platforms/: Bundled vertical solutions
  - ai-hub/ (enterprise AI platform)
  - open-banking/ (PSD2/FAPI fintech sandbox)
- docs/: Platform documentation (PLATFORM-TECH-STACK.md, SRE.md)

All internal links updated to use relative paths within monorepo.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 10:53:18 +00:00