Local agent server
Run a local Agent Server when you want a backend process to host Faheem Code conversations over HTTP and WebSocket. This is the simplest setup for testing Faheem Code-style backends, local integrations, and client-server SDK applications.
Install
Create a Python environment and install the server package and its SDK dependencies:
uv venv
source .venv/bin/activate
uv pip install -U \
faheemcode-sdk \
faheemcode-tools \
faheemcode-workspace \
faheemcode-agent-server
If you are working from the SMART-National-Solution/faheem-code-sdk repository, see Agent Server Package § Install for the uv-based setup.
Start without authentication
For local development on your own machine, start the server on loopback:
python -m faheemcode.agent_server --host 127.0.0.1 --port 8000
Verify that it is running:
curl http://127.0.0.1:8000/health
Open the API docs at http://127.0.0.1:8000/docs.
If SESSION_API_KEY (legacy alias) or FC_SESSION_API_KEYS_* is already set in your shell, the server will require that key for /api/* requests. Unset those variables for unauthenticated local-only testing.
Start with an API key
Set a session API key before starting the server:
export FC_SESSION_API_KEYS_0="$(openssl rand -hex 32)"
export FC_SECRET_KEY="$(openssl rand -hex 32)"
python -m faheemcode.agent_server --host 127.0.0.1 --port 8000
Requests to /api/* must include the session key. This request returns the conversation count when the key is accepted:
curl \
-H "X-Session-API-Key: $FC_SESSION_API_KEYS_0" \
http://127.0.0.1:8000/api/conversations/count
Connect from the SDK
Use Workspace(host=..., api_key=...) to connect SDK code to the server:
import os
from pydantic import SecretStr
from faheemcode.sdk import Conversation, LLM, Workspace
from faheemcode.tools.preset.default import get_default_agent
llm = LLM(
model=os.environ.get("LLM_MODEL", "anthropic/claude-sonnet-4-5-20250929"),
api_key=SecretStr(os.environ["LLM_API_KEY"]),
)
agent = get_default_agent(llm=llm, cli_mode=True) # disable browser-automation tools
workspace = Workspace(
host="http://127.0.0.1:8000",
api_key=os.environ["FC_SESSION_API_KEYS_0"],
working_dir="workspace/project",
)
conversation = Conversation(agent=agent, workspace=workspace)
conversation.send_message("Create a NOTES.md file with three facts about this project.")
conversation.run()
conversation.close()
If the server was started without FC_SESSION_API_KEYS_0, remove the api_key=... argument.
The working_dir value is relative to the server's process working directory. See Runtime Files for the default directory layout.
Connect from another service
For a non-SDK backend service, pass the session API key as X-Session-API-Key:
curl \
-H "X-Session-API-Key: $FC_SESSION_API_KEYS_0" \
-H "Content-Type: application/json" \
http://127.0.0.1:8000/api/conversations/count
Keep the Agent Server bound to 127.0.0.1 when the backend runs on the same machine. If the backend runs on another host, use a private network or reverse proxy, enable TLS, and restrict network access to trusted callers.
For CORS configuration and running directly from a checkout of SMART-National-Solution/faheem-code-sdk, see the Agent Server Package page.
Ready-to-run example
The example starts a local Agent Server subprocess, waits for it to become healthy, connects with Workspace(host=...), and runs a RemoteConversation.
You can run the example code as-is.
export LLM_API_KEY="your-api-key"
export LLM_MODEL="anthropic/claude-sonnet-4-5-20250929" # or openai/gpt-4o, etc.
cd software-agent-sdk
uv run python examples/02_remote_agent_server/01_convo_with_local_agent_server.py
# https://app.faheemcode.ai/settings/api-keys
export LLM_API_KEY="example-user-api-key"
export LLM_MODEL="faheemcode/claude-sonnet-4-5-20250929"
cd software-agent-sdk
uv run python examples/02_remote_agent_server/01_convo_with_local_agent_server.py
Troubleshooting
- 401 Unauthorized: Check that the client sends
X-Session-API-Keyand that it matchesFC_SESSION_API_KEYS_0. - Secrets are missing after restart: Set a stable
FC_SECRET_KEYbefore starting the server. - The server is reachable locally but not from another machine: Use
--host 0.0.0.0only behind trusted network controls, then check firewall and proxy rules. - CORS errors in a browser: Set
FC_ALLOW_CORS_ORIGINS_0to the browser app origin. - Port conflict: Start with another port, for example
--port 8001.
Next steps
- Agent Server Package - Installation, security, and operational guidance.
- Docker Sandboxed Server - Run the server in an isolated Docker workspace.
- API Sandboxed Server - Start hosted runtime workspaces.
- Agent Server API Reference - Browse generated endpoint docs.