Skip to content

Network Configuration: Proxy & Environment Variables ​

Compliance Notice

Please comply with your organization's network usage policies and local regulations. This course only covers configuration methods for proxy environment variables.

📝 Course Notes ​

Key takeaways from this lesson:

Network Configuration: Proxy and Environment Variables Notes


What This Lesson Covers ​

In corporate environments, accessing external services often requires going through a proxy or firewall. This lesson teaches you how to configure environment variables so OpenCode can properly connect to AI services.


First Check: Do You Need This Lesson? ​

If you plan to use models with direct access (e.g., local models, models hosted within your corporate network): You can skip this lesson and go directly to 1.4 Connect Model.

If you need to use Claude, GPT, or other external AI models through a corporate network: Please continue reading.


What You'll Be Able to Do ​

  • Configure HTTP proxy environment variables
  • Verify network configuration is working
  • Troubleshoot common network issues

Your Current Situation ​

  • Installation succeeded, but connecting to models returns connection timeout
  • Company/school network requires proxy configuration, but you don't know how to make OpenCode use it
  • Configured proxy but still can't connect, unsure what's wrong

When to Use This Solution ​

  • When you need: Access external services through corporate proxy/firewall
  • And you don't want: Constant connection timeout errors

🎒 Before You Start ​

Make sure you have:

  • [ ] Completed 1.2 Installation
  • [ ] Your network environment supports accessing target services (or you have a proxy service)
  • [ ] Know your proxy address and port (if unsure, consult your network administrator or IT department)

Core Concepts ​

What is a Proxy ​

A proxy server acts as an intermediary. Your requests go to the proxy first, then the proxy forwards them to the target server, and responses come back the same way.

Common scenarios requiring a proxy:

  • Corporate intranets need a gateway to access external services
  • School networks have access restrictions
  • Firewall policies require specific routing for certain services
  • Security compliance mandates traffic inspection

How OpenCode Uses Proxies ​

OpenCode reads proxy configuration through environment variables. You need to set:

  • HTTP_PROXY: Proxy address for HTTP requests
  • HTTPS_PROXY: Proxy address for HTTPS requests

Format: http://proxy-address:port-number

Once set, OpenCode and most command-line tools will automatically use the proxy.


Follow Along ​

Step 0: Confirm Your Proxy Information ​

You need two pieces of information:

  1. Proxy address: Usually 127.0.0.1 (local proxy) or an address provided by your company
  2. Port number: A number like 7890, 8080, 3128, etc.

💡 Don't know the port number?

Check your proxy software settings for "HTTP Port" or "Local Listening Port".

For corporate/school proxies, consult your IT department.


Step 1: Test if the Proxy Works ​

First, confirm the proxy itself is functional.

In your terminal, run (replace with your address and port):

bash
curl -x http://127.0.0.1:7890 -I https://httpbin.org/ip

Success:

HTTP/1.1 200 Connection established

HTTP/2 200
content-type: application/json
...

Seeing HTTP/2 200 means the proxy is working properly.

Failure Case 1: Connection Refused

curl: (7) Failed to connect to 127.0.0.1 port 7890: Connection refused

Cause: Proxy service is not running, or port number is wrong. Confirm the proxy software is started and port number is correct.

Failure Case 2: Timeout

curl: (28) Operation timed out

Cause: Proxy service has issues, or target address is unreachable. Check proxy configuration.


Step 2: Set Environment Variables (Temporary) ​

Set temporarily first, then write to config file once confirmed working.

bash
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
powershell
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"

⚠️ Note

Replace 127.0.0.1:7890 with your actual proxy address and port.

Verify the setting:

bash
echo $HTTP_PROXY

Should output the value you set. On Windows, use $env:HTTP_PROXY.


Step 3: Verify Environment Variables Work ​

Now test without the -x parameter to see if environment variables take effect automatically:

bash
curl -I https://httpbin.org/ip

If it returns HTTP/2 200, the environment variable configuration succeeded, and curl automatically used the proxy.


Step 4: Write to Config File (Permanent) ​

Temporary settings only work for the current terminal window. After writing to the config file, they'll take effect every time you open a terminal.

bash
# Edit config file
nano ~/.zshrc

# Add at the end of the file:
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890

# Save and exit (Ctrl+X → Y → Enter)
# Reload config
source ~/.zshrc
bash
nano ~/.bashrc

# Add at the end of the file:
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890

# Save and exit, reload
source ~/.bashrc
powershell
# Set user-level environment variables
[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://127.0.0.1:7890", "User")
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://127.0.0.1:7890", "User")

# Restart PowerShell for changes to take effect

💡 How to know if you're using zsh or bash?

bash
echo $SHELL

Output containing zsh means zsh, containing bash means bash. Newer macOS versions default to zsh.


Corporate Proxy Specifics ​

Authentication ​

Many corporate proxies require authentication:

bash
export HTTP_PROXY=http://username:[email protected]:8080
export HTTPS_PROXY=http://username:[email protected]:8080

Security Note

Storing passwords in environment variables is not ideal. Consider using:

  • Proxy authentication via credential managers
  • NTLM/Kerberos authentication if supported
  • Consult your IT security team for best practices

No Proxy (Bypass List) ​

Some addresses should bypass the proxy:

bash
export NO_PROXY=localhost,127.0.0.1,.company.com,.internal

Checkpoint ✅ ​

All items must pass to continue

  • [ ] Proxy service is running
  • [ ] curl -I https://httpbin.org/ip returns 200 status code
  • [ ] echo $HTTP_PROXY has output

Troubleshooting ​

Issue 1: Connection refused ​

Full error:

curl: (7) Failed to connect to 127.0.0.1 port 7890: Connection refused

Troubleshooting steps:

  1. Is the proxy software running? Check taskbar/menu bar icon
  2. Is the port number correct? Open proxy software settings to confirm
  3. Some software requires enabling "Allow LAN connections" or "HTTP proxy" option

Issue 2: Operation timed out ​

Full error:

curl: (28) Operation timed out after 30001 milliseconds

Troubleshooting steps:

  1. Is the proxy software connected properly? Check proxy software status
  2. Is the target service reachable? Test with a different address (e.g., https://httpbin.org)
  3. If using a remote proxy, check network connection
  4. Corporate network: Check if firewall rules are blocking the connection

Issue 3: Environment Variables Not Working ​

Symptom: Variables are set, but curl still times out

Troubleshooting steps:

  1. Confirm variables are set: echo $HTTP_PROXY
  2. Some tools require both uppercase and lowercase variables:
    bash
    export http_proxy=http://127.0.0.1:7890
    export https_proxy=http://127.0.0.1:7890
    export HTTP_PROXY=http://127.0.0.1:7890
    export HTTPS_PROXY=http://127.0.0.1:7890
  3. After writing to config file, need to source or open a new terminal

Issue 4: Only Some Requests Go Through Proxy ​

Symptom: Some websites work, others don't

Possible causes:

  • Proxy service routing rules issues
  • Some addresses are excluded from proxy
  • Corporate firewall blocking specific endpoints

Solution: Check proxy software rule settings, or consult your network administrator.


Issue 5: Corporate Firewall Blocking ​

Symptom: Proxy works for some sites but not AI API endpoints

Possible causes:

  • Corporate firewall rules block AI service domains
  • Deep packet inspection blocking encrypted traffic
  • DNS filtering

Solutions:

  • Consult your IT department about whitelist requirements
  • Consider using models hosted within your corporate network
  • Check if your organization has approved AI service endpoints

When You Don't Need a Proxy ​

If you only plan to use local models or models accessible within your corporate network, you don't need to configure a proxy. You can skip to the next lesson.


Lesson Summary ​

You learned:

  1. Understanding the role of proxies in corporate networks
  2. Configuring proxies through environment variables
  3. Verifying proxy is working
  4. Troubleshooting common issues including firewall problems

Next Lesson Preview ​

The next lesson is the highlight of Stage 1: Connect to an AI model and send your first message.

I'll tell you:

  • What an API Key is and how to get one
  • How to choose from different model options (free, cloud, local)
  • Send your first message and see the AI's response

Having Issues?

Stuck on network configuration? Join the community to discuss with fellow learners and get real-time help.