frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: Kontext CLI – Credential broker for AI coding agents in Go

https://github.com/kontext-dev/kontext-cli
47•mc-serious•5h ago
We built the Kontext CLI because AI coding agents need access to GitHub, Stripe, databases, and dozens of other services — and right now most teams handle this by copy-pasting long-lived API keys into .env files, or the actual chat interface, whilst hoping for the best.

The problem isn't just secret sprawl. It's that there's no lineage of access. You don't know which developer launched which agent, what it accessed, or whether it should have been allowed to. The moment you hand raw credentials to a process, you've lost the ability to enforce policy, audit access, or rotate without pain. The credential is the authorization, and that's fundamentally broken when autonomous agents are making hundreds of API calls per session.

Kontext takes a different approach. You declare what credentials a project needs in a .env.kontext file:

  GITHUB_TOKEN={{kontext:github}}
  STRIPE_KEY={{kontext:stripe}}
  LINEAR_TOKEN={{kontext:linear}}
Then run `kontext start --agent claude`. The CLI authenticates you via OIDC, and for each placeholder: if the service supports OAuth, it exchanges the placeholder for a short-lived access token via RFC 8693 token exchange; for static API keys, the backend injects the credential directly into the agent's runtime environment. Either way, secrets exist only in memory during the session — never written to disk on your machine. Every tool call is streamed for audit as the agent runs.

The closest analogy is a Security Token Service (STS): you authenticate once, and the backend mints short-lived, scoped credentials on-the-fly — except unlike a classical STS, we hold the upstream secrets, so nothing long-lived ever reaches the agent. The backend holds your OAuth refresh tokens and API keys; the CLI never sees them. It gets back short-lived access tokens scoped to the session.

What the CLI captures for every tool call: what the agent tried to do, what happened, whether it was allowed, and who did it — attributed to a user, session, and org.

Install with one command: `brew install kontext-dev/tap/kontext`

The CLI is written in Go (~5ms hook overhead per tool call), uses ConnectRPC for backend communication, and stores auth in the system keyring. Works with Claude Code today, Codex support coming soon.

We're working on server-side policy enforcement next — the infrastructure for allow/deny decisions on every tool call is already wired, we just need to close the loop so tool calls can also be rejected.

We'd love feedback on the approach. Especially curious: how are teams handling credential management for AI agents today? Are you just pasting env vars into the agent chat, or have you found something better?

GitHub: https://github.com/kontext-dev/kontext-cli Site: https://kontext.security

Comments

amjd•2h ago
Congrats on the launch! What are the key advantages of this compared to OneCLI[1]?

[1]: https://github.com/onecli/onecli

mc-serious•2h ago
Great question. Two main differences:

Workflow: OneCLI runs as a self-hosted Docker gateway — you route agent traffic through localhost:10255. Kontext doesn't change how you use Claude Code at all, just kontext start --agent claude.

Visibility layer: OneCLI intercepts outbound HTTP requests. Kontext hooks into Claude's PreToolUse/PostToolUse events, so you see bash commands, file ops, and API calls and not just network traffic.

Trust model tradeoff worth naming: OneCLI is fully self-hosted. Kontext holds secrets server-side and mints short-lived tokens per session. We do this via token exchange, RFC 8693, and natively build upon Oauth to support only handing over short-lived tokens - you don't need to capture refresh tokens for external tool calls at all.

esafranchik•2h ago
Does this work with any tool calls that make an HTTP request? e.g. calling `curl` directly vs writing a script to make the request, then calling it
mc-serious•2h ago
Yes, with one important distinction: our visibility is at the agent tool boundary, not the raw network layer.

So if Claude Code invokes Bash and runs curl ..., we see that tool invocation. If it invokes Bash and runs python script.py, and that script makes HTTP requests internally, we still see the Bash invocation.

Vishi3•2h ago
Can I integrate this with my coding agents?
traceroute66•2h ago
Sounds awfully similar to Tailscale Aperture[1]

[1] https://tailscale.com/blog/aperture-self-serve

mc-serious•1h ago
Thanks for flagging - wasn't aware of Aperture! It's a little different to what the Kontext CLI does though.

Aperture solves “make multiple coding agents talk to the right LLM backend through an Aperture proxy.” We solve “launch a governed agent session with identity, short-lived third-party credentials, and tool-level auditability.” They overlap at the launcher layer, but the security goals are different.

airstrike•2h ago
Really cool and much needed!

I was actually just about to get started writing this but in Rust....

mc-serious•1h ago
Nice! I'd love to hear what you think about our approach, and what features you'd like to see first.
sarahroehm•2h ago
Finally a solution which focuses on contextual authorization - evaluating the agent's reasoning trace when it requests a credential, only issuing it if the intent matches what the user authorized.. developer-focused and self-serve.Happy Launch day!!
0xOsprey•2h ago
Yup I needed this bad for my NanoClaw

Nice work

sjdv1982•1h ago
What if kontext runs under the same user as Claude? Could it in principle inspect the kontext process and extract the key from memory?
measurablefunc•26m ago
It should be possible to do this w/ eBPF. Monitor network i/o & rewrite the request on the fly to include the proper tokens & signatures. The agent can just be given placeholder tokens. That way all the usual libraries work as expected & the secrets/signatures are handled w/o worrying about another abstraction layer. Here is some prior art: https://riptides.io/blog/when-ebpf-isnt-enough-why-we-went-w...
zimbatm•25m ago
This is how keychains should be designed. Never return the secret, but mint a new token, or sign a request.

We need this also for normal usage like development environments. Or when invoking a command on a remote server.

Are you going to add support for services that don't support OIDC or this going to be a known limitation?

Show HN: LangAlpha – what if Claude Code was built for Wall Street?

https://github.com/ginlix-ai/langalpha
52•zc2610•4h ago•15 comments

Show HN: Kontext CLI – Credential broker for AI coding agents in Go

https://github.com/kontext-dev/kontext-cli
47•mc-serious•5h ago•14 comments

Show HN: Kelet – Root Cause Analysis agent for your LLM apps

https://kelet.ai/
30•almogbaku•2h ago•18 comments

Show HN: A memory database that forgets, consolidates, and detects contradiction

https://github.com/yantrikos/yantrikdb-server
12•pranabsarkar•3h ago•6 comments

Show HN: Plain – The full-stack Python framework designed for humans and agents

https://github.com/dropseed/plain
7•focom•1h ago•0 comments

Show HN: A Claude Code–driven tutor for learning algorithms in Go

https://github.com/zuzuleinen/algotutor/
3•zuzuleinen•1h ago•0 comments

Show HN: Run GUIs as Scripts

https://github.com/skinnyjames/hokusai-pocket
18•zero-st4rs•4d ago•7 comments

Show HN: AriaType – open-source privacy-first and local-first voice-to-text app

https://github.com/joe223/AriaType
2•Joe_Harris•3h ago•1 comments

Show HN: Ithihāsas – a character explorer for Hindu epics, built in a few hours

https://www.ithihasas.in
165•cvrajeesh•23h ago•44 comments

Show HN: We built an MCP for Windows – ask Claude about CPU, temps, and privacy

https://github.com/AppControlLabs/appcontrol-mcp-go/
7•suprnurd•4h ago•5 comments

Show HN: A stateful UI runtime for reactive web apps in Go

https://github.com/doors-dev/doors
10•derstruct•10h ago•4 comments

Show HN: boringBar – a taskbar-style dock replacement for macOS

https://boringbar.app/
510•a-ve•2d ago•294 comments

Show HN: Continual Learning with .md

https://github.com/SunAndClouds/ReadMe
32•wenhan_zhou•22h ago•28 comments

Show HN: VibeDrift – Measure drift in AI-generated codebases

https://www.vibedrift.ai/
2•samiahmadkhan•8h ago•12 comments

Show HN: Pushduck – S3 uploads that run on Cloudflare Workers, no AWS SDK

10•abhay_ramesh•12h ago•6 comments

Show HN: Deflect One – command line dashboard for managing Linux servers via SSH

https://github.com/Frytskyy/deflect-one
6•whitemanv•13h ago•4 comments

Show HN: A CLI that writes its own integration code

https://docs.superglue.cloud/getting-started/cli-skills
14•adinagoerres•10h ago•9 comments

Show HN: Mcptube – Karpathy's LLM Wiki idea applied to YouTube videos

https://github.com/0xchamin/mcptube
12•0xchamin•1d ago•2 comments

Show HN: Oberon System 3 runs natively on Raspberry Pi 3 (with ready SD card)

https://github.com/rochus-keller/OberonSystem3Native/releases
240•Rochus•2d ago•107 comments

Show HN: A Bomberman-style 1v1 game where LLMs compete in real time

https://github.com/klemenvod/TokenBrawl
2•sunandsurf•11h ago•2 comments

Show HN: Pardonned.com – A searchable database of US Pardons

497•vidluther•3d ago•273 comments

Show HN: Tsplat – Render Gaussian Splats directly in your terminal

https://github.com/darshanmakwana412/tsplat
6•darshanmakwana•12h ago•1 comments

Show HN: I built a social media management tool in 3 weeks with Claude and Codex

https://github.com/brightbeanxyz/brightbean-studio
185•JanSchu•1d ago•126 comments

Show HN: Claudraband – Claude Code for the Power User

https://github.com/halfwhey/claudraband
118•halfwhey•2d ago•44 comments

Show HN: Write better Go integration tests with open source dockertest v4

https://github.com/ory/dockertest/tree/v4
3•pragmaticviber•5h ago•0 comments

Show HN: Equirect – a Rust VR video player

https://github.com/greggman/equirect
14•greggman65•1d ago•1 comments

Show HN: Lythonic – Compose Python functions into data-flow pipelines

https://github.com/walnutgeek/lythonic
5•walnutgeek•22h ago•0 comments

Show HN: Prmana – OIDC SSH Login for Linux with DPoP (Rust, Apache 2.0)

https://github.com/prodnull/prmana
3•cbchhaya•16h ago•1 comments

Show HN: FluidCAD – Parametric CAD with JavaScript

https://fluidcad.io/
155•maouida•4d ago•38 comments

Show HN: Excalicharts – Charting Library for Excalidraw

https://github.com/tombedor/excalicharts
4•jjfoooo4•18h ago•0 comments