Configuration Reference
The following is a complete reference of the arch_conifg.yml
that controls the behavior of a single instance of
the Arch gateway. This where you enable capabilities like routing to upstream LLm providers, defining prompt_targets
where prompts get routed to, apply guardrails, and enable critical agent observability features.
1version: v0.1
2
3listener:
4 address: 0.0.0.0 # or 127.0.0.1
5 port: 10000
6 # Defines how Arch should parse the content from application/json or text/pain Content-type in the http request
7 message_format: huggingface
8 common_tls_context: # If you configure port 443, you'll need to update the listener with your TLS certificates
9 tls_certificates:
10 - certificate_chain:
11 filename: /etc/certs/cert.pem
12 private_key:
13 filename: /etc/certs/key.pem
14
15# Arch creates a round-robin load balancing between different endpoints, managed via the cluster subsystem.
16endpoints:
17 app_server:
18 # value could be ip address or a hostname with port
19 # this could also be a list of endpoints for load balancing
20 # for example endpoint: [ ip1:port, ip2:port ]
21 endpoint: 127.0.0.1:80
22 # max time to wait for a connection to be established
23 connect_timeout: 0.005s
24
25 mistral_local:
26 endpoint: 127.0.0.1:8001
27
28 error_target:
29 endpoint: error_target_1
30
31# Centralized way to manage LLMs, manage keys, retry logic, failover and limits in a central way
32llm_providers:
33 - name: OpenAI
34 provider: openai
35 access_key: $OPENAI_API_KEY
36 model: gpt-4o
37 default: true
38 stream: true
39 rate_limits:
40 selector: #optional headers, to add rate limiting based on http headers like JWT tokens or API keys
41 http_header:
42 name: Authorization
43 value: "" # Empty value means each separate value has a separate limit
44 limit:
45 tokens: 100000 # Tokens per unit
46 unit: minute
47
48 - name: Mistral8x7b
49 provider: mistral
50 access_key: $MISTRAL_API_KEY
51 model: mistral-8x7b
52
53 - name: MistralLocal7b
54 provider: local
55 model: mistral-7b-instruct
56 endpoint: mistral_local
57
58# provides a way to override default settings for the arch system
59overrides:
60 # By default Arch uses an NLI + embedding approach to match an incomming prompt to a prompt target.
61 # The intent matching threshold is kept at 0.80, you can overide this behavior if you would like
62 prompt_target_intent_matching_threshold: 0.60
63
64# default system prompt used by all prompt targets
65system_prompt: You are a network assistant that just offers facts; not advice on manufacturers or purchasing decisions.
66
67prompt_guards:
68 input_guards:
69 jailbreak:
70 on_exception:
71 message: Looks like you're curious about my abilities, but I can only provide assistance within my programmed parameters.
72
73prompt_targets:
74 - name: information_extraction
75 default: true
76 description: handel all scenarios that are question and answer in nature. Like summarization, information extraction, etc.
77 endpoint:
78 name: app_server
79 path: /agent/summary
80 http_method: POST
81 # Arch uses the default LLM and treats the response from the endpoint as the prompt to send to the LLM
82 auto_llm_dispatch_on_response: true
83 # override system prompt for this prompt target
84 system_prompt: You are a helpful information extraction assistant. Use the information that is provided to you.
85
86 - name: reboot_network_device
87 description: Reboot a specific network device
88 endpoint:
89 name: app_server
90 path: /agent/action
91 parameters:
92 - name: device_id
93 type: str
94 description: Identifier of the network device to reboot.
95 required: true
96 - name: confirmation
97 type: bool
98 description: Confirmation flag to proceed with reboot.
99 default: false
100 enum: [true, false]
101
102error_target:
103 endpoint:
104 name: error_target_1
105 path: /error
106
107tracing:
108 # sampling rate. Note by default Arch works on OpenTelemetry compatible tracing.
109 sampling_rate: 0.1