Repository navigation
Releases: HexamindOrganisation/hexgate
Releases · HexamindOrganisation/hexgate
Release list
v0.3.4
What's Changed
- feat(evals): add the sub-agent and modules explicit-request cases by @victorludvig in #349
- feat(evals): add the single-file explicit-request cases f02–f09 by @victorludvig in #354
- feat(evals): add input-level cases l3 and l4 by @victorludvig in #350
- test(evals): lint every case's own starting project by @victorludvig in #358
- fix(sdk): accept agent_usage as a constraint root in policy lint by @guillaume-hexamind in #363
- feat(evals): hold out four cases and add a model task parameter by @victorludvig in #364
- build(evals): cap parallel eval sandboxes at four by default by @victorludvig in #365
- feat(evals): route the Claude sandbox through an Anthropic-only egress proxy by @victorludvig in #355
- feat(evals): add must-refuse and robustness cases by @victorludvig in #366
- feat(evals): add security cases by @victorludvig in #367
- refactor(sdk): pass usage roots to policy engines as one decision input by @guillaume-hexamind in #369
- docs(sdk): fail on undocumented sdk surface and close the gaps by @quanghexa94 in #347
- fix(sdk): build the enforcer's usage source and audit sender from the platform client by @guillaume-hexamind in #371
- feat(platform-api): sign oauth access tokens with their own keypair by @victorludvig in #332
- feat(clickhouse,platform-api): roll usage up per end user and serve it by @guillaume-hexamind in #370
- feat(mcp): cache the api's jwks for the mcp server by @victorludvig in #333
- demo: 3-level DevOps deploy-chain showcase by @quanghexa94 in #360
- refactor(sdk): key usage ledgers and snapshots by usage scope by @guillaume-hexamind in #372
- feat(platform-api): fetch oauth client metadata behind an ssrf guard by @victorludvig in #334
- feat(platform-api): rank a project's end users by usage for the dashboard by @guillaume-hexamind in #373
- feat(dashboard): playground presentation mode by @quanghexa94 in #361
- feat(sdk): count usage per end user in bounded process-local ledgers by @guillaume-hexamind in #374
- feat(mcp): verify oauth tokens and serve the mcp app at /mcp by @victorludvig in #376
- feat(platform-api): cache oauth client metadata and match redirect uris by @victorludvig in #377
- feat(mcp): serve the policy reference and send server instructions by @victorludvig in #386
- feat(sdk): cap one end user's usage across agents with user_usage.* by @guillaume-hexamind in #378
- feat(sdk): read end-user usage from the platform, bounded per process by @guillaume-hexamind in #379
- feat(platform-api): serve oauth discovery metadata and jwks at the root by @victorludvig in #387
- fix(mcp): read the issuer from HEXGATE_PUBLIC_URL only and serve it unchanged by @victorludvig in #396
- build(mcp): build the mcp server image and check it in ci by @victorludvig in #397
- build: cap the project at python 3.13 (<3.14) by @quanghexa94 in #329
- feat(sdk): enforce user usage across processes at the run boundary by @guillaume-hexamind in #398
- feat(mcp): call the platform api as the caller and list their granted projects by @victorludvig in #390
- feat(platform-api): accept oauth access tokens in require_user on scoped routes only by @victorludvig in #403
Full Changelog: v0.3.3...v0.3.4
v0.3.3
What's Changed
- feat(sdk): surface agent guards on the manifest for platform governance by @quanghexa94 in #283
- feat(sdk): add the guards policy block to enable/disable declared guards by @quanghexa94 in #298
- feat(sdk): apply the guard policy stance in the guarded runner, closed-world by @quanghexa94 in #285
- feat(sdk): lint the guards policy block against the agent manifest by @quanghexa94 in #286
- docs(sdk): add a guarded-agent platform demo notebook by @quanghexa94 in #289
- docs: remove committed agent-policy-dimension design doc by @quanghexa94 in #277
- feat(sdk): add a skills block to the compose policy.yaml grammar by @guillaume-hexamind in #302
- feat(sdk): run every policy check through one entry point by @victorludvig in #306
- feat(clickhouse): record an agent_run row for every admitted run by @guillaume-hexamind in #310
- feat(sdk): add a process-local per-agent usage ledger by @guillaume-hexamind in #308
- feat(platform-api): route policy preview, check and validate through analyze_policy by @victorludvig in #304
- refactor(cli): route policy validate through analyze_policy by @victorludvig in #318
- feat(sdk): check gate args, skill names and constraint roots in analyze_policy by @victorludvig in #321
- refactor(sdk): fetch policy and bans concurrently at the run boundary by @guillaume-hexamind in #309
- feat(sdk): lint each agent's roles column against its own manifest by @victorludvig in #322
- feat(sdk): flag reach targets and roles columns that name no agent by @victorludvig in #324
- feat(clickhouse): roll usage up per agent per minute, deduped across polls by @guillaume-hexamind in #317
- feat(evals): score a policy-writing workspace with the hexgate sdk by @victorludvig in #287
- feat(platform-api): add the oauth scope registry and token tables by @victorludvig in #327
- fix(sdk): canonicalize the native agent's name at every identity site by @guillaume-hexamind in #325
- feat(evals): score role-wide cases on every roles.yaml column (land #299) by @victorludvig in #337
- feat(sdk): make agent_usage.* paths loadable, read from the local ledger by @guillaume-hexamind in #314
- feat(platform-api): serve agent usage windows from the minute rollup by @guillaume-hexamind in #326
- feat(evals): load the policy-writing cases, one directory per case by @victorludvig in #288
- feat(evals): check a case's dry-run calls against its agent by @victorludvig in #330
- feat(evals): add the single-file starting project and the first case by @victorludvig in #339
- feat(evals): run the policy-writing cases in Inspect on our own answers by @victorludvig in #342
- feat(sdk): add the platform usage source behind agent_usage.* by @guillaume-hexamind in #331
- feat(sdk): add the usage.on_unavailable policy key, signed into the bundle by @guillaume-hexamind in #335
- feat(evals): run Claude Code in a Docker sandbox for agent=claude by @victorludvig in #343
- build(evals): install OPA in the Claude sandbox image per architecture by @victorludvig in #345
- feat(sdk): enforce agent_usage.* across processes at the run boundary by @guillaume-hexamind in #338
- feat(evals): add input-level cases l0, l1 and l5 by @victorludvig in #348
- feat(evals): add the sub-agent and modules starting projects by @victorludvig in #341
- feat(evals): add input-level cases l2 and l2b by @victorludvig in #352
- docs(sdk): document agent_usage.* as a soft cross-process quota by @guillaume-hexamind in #340
- fix(sdk): percent-encode the agent name in get_agent's url by @Dev-next-gen in #359
New Contributors
- @Dev-next-gen made their first contribution in #359
Full Changelog: v0.3.2...v0.3.3
v0.3.2
What's Changed
- fix(sdk, collector): apply role-keyed top-level constraints, widen revocation staleness by @guillaume-hexamind in #199
- feat(platform-api): compose policy-file store + resolve/check/preview API by @quanghexa94 in #179
- style(platform-api): ruff-format policy_modules service/router/tests by @quanghexa94 in #207
- feat(sdk): compose admission block (role→agent ingress access) by @quanghexa94 in #200
- feat(clickhouse): add llm_message table by @victorludvig in #183
- fix(redpanda): raise the record-size budget for message spans by @victorludvig in #185
- feat(platform-api, collector): soft-delete devtoken rows and filter revoked keys on every read path by @guillaume-hexamind in #206
- feat(platform-api): map hexgate.messages spans into LlmMessageEvent by @victorludvig in #186
- feat(sdk): add LlmMessageEvent and emit_llm_messages by @victorludvig in #187
- feat(platform-api): store llm_message rows from the enricher by @victorludvig in #188
- feat(sdk): add the MessageCursor delta helper by @victorludvig in #189
- feat(platform-api, dashboard): record who created and last updated every control-plane row by @guillaume-hexamind in #209
- feat(dashboard): compose policy editor (file store, live preview, graph, tester) by @quanghexa94 in #180
- feat(platform-api): add the session-scoped llm-messages read endpoint by @victorludvig in #190
- feat(dashboard): move org + account admin into a settings space by @quanghexa94 in #219
- feat(dashboard): theme system — light/dark modes and blue/plum accent by @quanghexa94 in #218
- feat(sdk): capture OpenAI Agents messages in HexgateUsageHooks by @victorludvig in #191
- fix(platform-api): union policy graph to the most-permissive verdict by @quanghexa94 in #222
- refactor(sdk): enable ruff isort and sort imports tree-wide by @quanghexa94 in #145
- test(platform-scripts): cover hexgate.messages in the OTLP smoke check by @victorludvig in #192
- fix(dashboard): resolved-tab agent dropdown, inline folder create, legible graph edges by @quanghexa94 in #223
- fix(platform-scripts): apply each store's migrations independently by @guillaume-hexamind in #220
- feat(sdk): capture LangChain messages in HexgateUsageCallbackHandler by @victorludvig in #193
- fix(platform-scripts): guard each migration against a table create_all has not built by @guillaume-hexamind in #224
- build(platform-api): rebuild the SDK wheel on every image build by @guillaume-hexamind in #227
- feat(dashboard): show LLM messages in the Audit decision drawer by @victorludvig in #195
- feat(sdk): capture Google ADK messages in HexgateUsagePlugin by @victorludvig in #194
- feat(sdk): emit a per-run message event for Pydantic AI by @victorludvig in #196
- feat(dashboard): modernize the playground into an agentic chat by @quanghexa94 in #226
- test(platform-api): execute the migrations in CI against real Postgres and ClickHouse by @guillaume-hexamind in #228
- feat(sdk): tabulate a resolved policy set as an authorisation matrix by @victorludvig in #238
- feat(platform-api): record the operator's AI Act classification per agent by @victorludvig in #235
- feat(platform-api): assemble and sign the AI Act evidence report by @victorludvig in #239
- feat(sdk): add skill definitions to the agent manifest by @guillaume-hexamind in #253
- fix(sdk): expand Google ADK toolsets in the manifest and policy gate by @guillaume-hexamind in #254
- feat(sdk): child.as_tool() for native agent-as-tool sub-agent reach by @quanghexa94 in #233
- feat(sdk): enumerate_subagents — per-framework sub-agent introspection by @quanghexa94 in #243
- feat(sdk): record sub-agent reach edges on the manifest + via-specific warn by @quanghexa94 in #244
- feat(cli): register the whole sub-agent tree (register_tree) + serve/register flags by @quanghexa94 in #245
- docs: add pr-description and write-adr agent skills by @quanghexa94 in #217
- feat(platform-api): persist agent skills from the manifest by @guillaume-hexamind in #256
- feat(dashboard): show registered skills on the agents page by @guillaume-hexamind in #258
- feat(sdk): discover Google ADK skills at registration by @guillaume-hexamind in #259
- feat(platform-api): render the AI Act evidence annex to PDF by @victorludvig in #237
- chore(skills): add write-policy Claude skill by @victorludvig in #263
- test(sdk): probe the ADK skills contract in the version matrix by @guillaume-hexamind in #261
- feat(sdk): add the skill policy key namespace by @guillaume-hexamind in #262
- chore(skills): add run-platform skill by @victorludvig in #265
- feat(cli): bind sub-agents to platform policy at serve by @quanghexa94 in #271
- docs(repo): rename CLAUDE.md to AGENTS.md by @victorludvig in #274
- feat(dashboard): ai act evidence report tab by @victorludvig in #236
- feat(sdk): evaluate skill keys closed-world on both engines by @guillaume-hexamind in #266
- feat(sdk): gate Google ADK skill activation under skill policy keys by @guillaume-hexamind in #267
- feat(platform-api): generate a skills block in the starter policy by @guillaume-hexamind in #270
- fix(sdk): discover the real tool surface of a compiled LangGraph agent by @guillaume-hexamind in #272
- test(sdk): assert the deepagents probe gates the top-level bound tool surface by @guillaume-hexamind in #275
- feat(sdk): discover deepagents skills at registration by @guillaume-hexamind in #278
- feat(sdk): gate deepagents skill activation under skill policy keys by @guillaume-hexamind in #282
- demo: support_bot + billing_bot policy showcase by @quanghexa94 in #264
- test(sdk): probe the deepagents skills contract in the version matrix by @guillaume-hexamind in #291
- feat(platform-scripts): seed llm_message transcripts alongside decisions by @victorludvig in #230
- fix(sdk): keep the cursor mark on an empty list and skip only a missing prompt by @victorludvig in #229
- docs(sdk): document agent skills, their policy block and both adapters by @guillaume-hexamind in #292
- fix(platform-api): install weasyprint system deps in the release job by @guillaume-hexamind in #296
Full Changelog: v0.3.1...v0.3.2
v0.3.1
What's Changed
- refactor(dashboard): rename tokens page to API keys, tidy nav and copy by @guillaume-hexamind in #102
- refactor(platform-api): rename DevToken to ApiKey by @victorludvig in #108
- build(collector): scaffold the OTLP ingestion Collector (Go) by @victorludvig in #111
- docs(sdk): guards + official-plugins concept page by @quanghexa94 in #125
- fix(platform-api): make the signed token_id fact the api-key row id by @victorludvig in #126
- feat(collector): verify Hexgate API keys in the OTLP receiver by @victorludvig in #127
- feat(sdk): agent-level policy model with admission/agents blocks by @quanghexa94 in #122
- feat(sdk): official secret-detection guards (hexgate.plugins) by @quanghexa94 in #123
- feat(platform-api): add ClickHouse batch-insert functions for the enricher job by @victorludvig in #128
- feat(sdk): define otel span semconv, expose redaction pipeline by @victorludvig in #130
- fix(platform-api): cover llm_invocation in the startup schema check by @victorludvig in #131
- refactor(platform-api): aggregate schema gaps across features at startup by @victorludvig in #136
- feat(sdk): serve OpenAI, Google ADK, and Pydantic AI agents (framework-agnostic streaming) by @quanghexa94 in #147
- Revert "feat(sdk): serve OpenAI, Google ADK, and Pydantic AI agents (framework-agnostic streaming)" by @quanghexa94 in #148
- feat(platform-api): add the span-enricher job (redpanda to clickhouse) by @victorludvig in #133
- feat(sdk): RunFacts accumulator and run scope by @guillaume-hexamind in #129
- feat(platform-api): compile modular agents' bundles from resolved modules by @quanghexa94 in #121
- feat(sdk): serve OpenAI, Google ADK, and Pydantic AI agents (framework-agnostic streaming) by @quanghexa94 in #149
- test(sdk): pin run scope coverage for the streamed launch helper by @victorludvig in #163
- fix(platform-scripts): realign seed_audit with the audit column contract by @guillaume-hexamind in #159
- feat(sdk): emit audit events as otlp spans by @victorludvig in #146
- build(collector): ship the full otlp pipeline in the deploy stack by @victorludvig in #157
- build(platform-scripts): add the otlp pipeline smoke test as a post-deploy check by @victorludvig in #168
- feat(sdk): agent-level admission enforcement (AgentGate, closed-world agent keys) by @quanghexa94 in #124
- docs(platform-api): describe the otlp pipeline as the audit transport by @victorludvig in #170
- fix(platform-api): raise audit log retention to six months by @victorludvig in #174
- feat(sdk): run namespace and writer by @guillaume-hexamind in #150
- feat(sdk): compose policy.yaml grammar front-end by @quanghexa94 in #175
- feat(clickhouse, platform-api): run_id and run counters on policy_decision by @guillaume-hexamind in #153
- docs(sdk): marimo notebook demoing guards + plugins across frameworks by @quanghexa94 in #156
- feat(sdk): enforce agent reach + admission at runtime, cap handoff depth (A3+A4) by @quanghexa94 in #142
- feat(sdk): add hexgate.messages wire contract and content caps by @victorludvig in #182
- feat(sdk): compose import graph (position=scope imports) by @quanghexa94 in #176
- feat(sdk): run facts on the audit payload, and policy-level constraints by @guillaume-hexamind in #155
- refactor(dashboard): move workspace switcher into a collapsible sidebar by @quanghexa94 in #172
Full Changelog: v0.3.0...v0.3.1
v0.3.0
What's Changed
- tests(sdk): find the framework versions compatible with hexgate adapters by @guillaume-hexamind in #91
- fix(sdk): correct framework version support and publish compatible ranges by @guillaume-hexamind in #92
- docs(sdk): unify adapter examples around one devops agent by @guillaume-hexamind in #94
- fix(hexgate): pydantic ai run sync no loop drop by @victorludvig in #93
- feat(sdk): optional egress proxy — gate outbound network by host by @quanghexa94 in #95
- feat(sdk): raw-TCP egress reachability gate (gate DB connections by host:port) by @quanghexa94 in #96
- docs(sdk): replace readme decision-flow ascii diagram with svg by @victorludvig in #98
- feat(sdk): multi-module policy — modules + linker (1/3) by @quanghexa94 in #97
- test(sdk): add enforcement + policy-pull latency benchmarks by @guillaume-hexamind in #100
- test(sdk): add live integration tests for all four framework adapters by @victorludvig in #99
- build(claude): add integration test skill by @victorludvig in #104
- fix(sdk): fail open when emit_llm_usage raises in adapter usage hooks by @victorludvig in #105
- feat(sdk): replace User scope with HexgateContext (user_roles + attributes) by @guillaume-hexamind in #106
- feat(sdk): thread ctx.* attributes through both policy engines by @guillaume-hexamind in #107
- feat(sdk): policy analyzer + hexgate policy check (2/3) by @quanghexa94 in #101
- refactor(sdk): user -> context/hexgate_context rename + ctx.* docs by @guillaume-hexamind in #112
- build(redpanda): stand up local Redpanda infra for OTLP ingestion by @victorludvig in #110
- refactor(sdk): user -> context rename minor fixes by @guillaume-hexamind in #114
- feat(sdk, platform): send attributes in audit events, update clickhouse schema by @guillaume-hexamind in #113
- feat(sdk): role-aware policy assembly (roles as capability bindings) by @quanghexa94 in #115
- feat(sdk): multi-role policy enforcement by @guillaume-hexamind in #117
- feat(sdk): pre/post tool-hook pipeline with observe, halt, and arg rewrite by @quanghexa94 in #118
- feat(sdk): route OpenAI/Google/Pydantic AI adapters through run_guarded (guards on all frameworks) by @quanghexa94 in #119
- feat(platform-api): project policy-module store + resolve/check API by @quanghexa94 in #116
- feat(sdk, platform): persist multi-role decisions in the audit pipeline by @guillaume-hexamind in #120
Full Changelog: v0.2.11...v0.3.0
v0.2.11
What's Changed
- fix(sdk): resolve .env from consumer cwd, not installed package path by @guillaume-hexamind in #85
- docs(sdk): add public ban concepts page by @guillaume-hexamind in #86
- docs(sdk): fix readme badge row spacing by @victorludvig in #89
- Add the gates demo: marimo narrative, policy, and one-box launch by @quanghexa94 in #81
- build(claude): add per-file format-on-edit hook by @victorludvig in #88
- feat(platform-scripts): enhance seed_audit.py script by @victorludvig in #84
- docs: remove legacy documentation, trim and optimize documentation not sdk and platform consumer - readable by @guillaume-hexamind in #87
- feat(dashboard): link key pages to hexgate docs by @guillaume-hexamind in #90
Full Changelog: v0.2.10...v0.2.11
v0.2.10
What's Changed
- feat(dashboard): usage dashboard page by @victorludvig in #83
Full Changelog: v0.2.9...v0.2.10
v0.2.9
What's Changed
- feat(hexgate): add llm usage hook by @victorludvig in #76
- refactor(sdk): split approval + tracing types so adapters skip LangChain by @quanghexa94 in #80
- feat(platform-api): add llm invocation summary API endpoint by @victorludvig in #82
- feat(demo): live demo on Daytona + Modal spawner (retire Codespaces) by @quanghexa94 in #78
- feat(dashboard): agent & user bans dashboard by @guillaume-hexamind in #79
Full Changelog: v0.2.8...v0.2.9
v0.2.8
What's Changed
- refactor(sdk): slim core - remove demo content, fix layering & naming by @guillaume-hexamind in #66
- fix(dashboard): Graph reads registered manifest as source of tools by @quanghexa94 in #68
- fix(platform-api): patch clickhouse_ping at its actual import site in readiness test by @victorludvig in #71
- feat(platform-api): Create llm invocation audit table and ingest POST endpoint by @victorludvig in #72
- feat(sdk): expand constraint DSL + policy-in-code, with pydantic↔WASM parity by @quanghexa94 in #69
- docs: README and documentation restructuration by @guillaume-hexamind in #70
- refactor(sdk): Generalize audit api keys registry by @victorludvig in #73
- feat(platform/api): ban invokation api backend logic by @guillaume-hexamind in #74
- docs: marimo demo for gating an MCP server with policy by @quanghexa94 in #75
- feat(hexgate): Agent or User Ban Gate by @guillaume-hexamind in #77
Full Changelog: v0.2.7...v0.2.8
v0.2.7
What's Changed
- refactor(platform/api): carve flat modules into core/deps/domains packages by @guillaume-hexamind in #64
- feat(playground): route approval_required tool calls to the connected tab by @quanghexa94 in #63
- feat(mcp): fan out MCP tool wrapping to every adapter by @quanghexa94 in #65
Full Changelog: v0.2.6...v0.2.7