5 ms·
Show HN: archgw: open-source, intelligent proxy for AI agents, built on Envoy
Hi HN! This is Adil, Salman, Co and Shuguang and we're excited to introduce archgw [1], an open source intelligent proxy for agents built on Envoy [2]. Arch moves the critical but crufty work around safety, observability, and routing of prompts outside business logic. Arch is a uniquely intelligent infrastructure primitive, engineered with purpose-built fast LLMs [3] for tasks like intent detection over multi-turn, parameter identification and extraction, triggering single/multiple function calls, and offers convenience features to auto dispatch LLM calls for summarization based on data from your APIs via system prompts configured in archgw.
Today, the approach to build a smart production-ready agent is weaving together a large set of mono-functional opinionated libraries, adding extra layers like LLM-based preprocessing to determine things like relevance and safety of the user's prompt (e.g. applying governance and guardrails). Once past that stage, developers must extract relevant information from the user prompt to determine intent, extract parameters as necessary, package relevant tools calls to an LLM to trigger a backend API to execute particular domain-specific task. etc. After all that is done then only are developers ready to trigger an LLM call for summarization and must manage upstream error handling and retry logic themselves. Not to mention, if they want to experiment with multiple LLMs or move between LLM versions, they have to write crufty undifferentiated code. This entire experience is slow, error prone, cumbersome, and not specifically unique.
Prior to building archgw, the team spent time building Envoy [2] at Lyft, API Gateway at AWS, specialized search and intent models at Microsoft Research and worked on safety at Meta. archgw was born out of the belief that several rules based mono-functional tools should be converged into a multi-functional infrastructure primitive designed for prompts and agents. We built archgw on the highly popular, battle-tested open source proxy Envoy and re-imagined it for prompts and agents. For this we had to build blazing fast LLMs [3] that can handle crufty, ahead-in-the-request-path type of work in handling and processing prompts that are sent to an agent, so that developers can focus on what matters most: building fast personalized agents without the unnecessary prompt engineering and systems integration work needed to get there.
Here are some additional details about the open source project. arghw is written in rust, and the request path has three main parts:
* Listener subsystem which handles downstream (ingress) and upstream (egress) request processing.
* Prompt handler subsystem. This is where archgw makes decisions on the safety of the incoming request via its prompt_guard primitive and identifies where to forward the conversation to via its prompt_target primitive.
* Model serving subsystem is the interface that hosts all the lightweight LLMs engineered in archgw and offers a framework for things like hallucination detection of our these models
We loved building this open source project, and our belief is that this infra primitive would help developers build faster, safer and more personalized agents without all the manual prompt engineering and systems integration work needed to get there. We hope to invite other developers to use and improve Arch. Please give it a shot and leave feedback here, or at our discord channel [4]
Also here is a quick demo of the project in action [5]. You can check out our public docs here at [6]. Our models are also available here [7].
[1] https://github.com/katanemo/archgw https://github.com/katanemo/archgw
[2] https://www.envoyproxy.io/ https://www.envoyproxy.io/
[3] https://huggingface.co/collections/katanemo/arch-function-66f209a693ea8df14317ad68 https://huggingface.co/collections/katanemo/arch-function-66...
[4] https://discord.com/channels/1292630766827737088/1292630768283029638 https://discord.com/channels/1292630766827737088/12926307682...
[5] https://www.youtube.com/watch?v=I4Lbhr-NNXk https://www.youtube.com/watch?v=I4Lbhr-NNXk
[6] https://docs.archgw.com/ https://docs.archgw.com/
[7] https://huggingface.co/katanemo https://huggingface.co/katanemo
- deleted 2y ago[deleted]
- fahimulhaq 2y agoHey Adil, Thanks for sharing and congratulations on launch. Can I just use arch for routing between LLMs? And what LLMs do you support? And what about key management? Do I manage access keys myself?
- adilhafeez 2y agoThanks! Those are all good questions. Let me respond to them one by one, > Can I just use arch for routing between LLMs Yes, you can use arch_config.yaml file to select between LLMs. In fact we have a demo on llm_routing [1] that you can try. Here how you can specify different LLMs in our config, llm_providers: - name: gpt-4o-mini access_key: $OPENAI_API_KEY provider: openai model: gpt-4o-mini default: true - name: gpt-3.5-turbo-0125 access_key: $OPENAI_API_KEY provider: openai model: gpt-3.5-turbo-0125 - name: gpt-4o access_key: $OPENAI_API_KEY provider: openai model: gpt-4o - name: ministral-3b access_key: $MISTRAL_API_KEY provider: mistral model: ministral-3b-latest > And what LLMs do you support We currently support mistral and openai. And for both of them we support streaming interface. We do expose openai complaint v1/chat interface so any chat UI that works with openai should work with us as well. We do ship demos with gradio sample application. > And what about key management? Do I manage access keys myself? None of your clients need to manage access keys. Upon receipt of request our filter will appropriate LLM from arch_config and pick relevant access_key and modify request with access_key from arch_config before sending request to upstream LLM [2]. [1] https://github.com/katanemo/archgw/tree/main/demos/llm_routing https://github.com/katanemo/archgw/tree/main/demos/llm_routi... [2] https://github.com/katanemo/archgw/blob/main/crates/llm_gateway/src/stream_context.rs#L178 https://github.com/katanemo/archgw/blob/main/crates/llm_gate...
- mikram 2y agoCongrats Adil! Interested idea with lot of potential. Do you have to use envoyproxy to use archgw? Can archgw be used for LLM routing without using envoyproxy?