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