Initial version: March 25, 2024 – Last update: October 16, 2026
October 2026: New: the Code Interpreter. Agents can now write and run code, and every code block in a chat has a “Run Code” button. Everything runs in a sandbox on D-ARCH servers, see below.
October 2026: We have changed the login backend. A few users may find that their chats and files are no longer displayed as usual. In this case, contact us and we will resolve the issue.
Arch AI (archai.ethz.ch) is the AI platform of the Department of Architecture, available to all members of ETH Zurich. It gives you chat with large language models, work with your own documents, image generation, voice input and output, web search, and a builder for your own assistants (“agents”).
One of Arch AI’s main objectives is to provide a straightforward user interface for on-premises AI. The aim is to highlight the capabilities and limitations of on-premises AI running on off-the-shelf hardware.
Everything runs on servers of the Department of Architecture at ETH Zurich. The only exception is one commercial cloud model, which you have to pick explicitly.
| Function | Where it runs | What leaves ETH |
|---|---|---|
| Chat with local models (Gemma 4, Qwen) | D-ARCH servers | nothing |
| Chat with GPT | Microsoft Azure, data centre in Sweden | your messages and files in that conversation |
| Files you upload, file search | D-ARCH servers | nothing |
| Image generation | D-ARCH servers | nothing |
| Running code (Code Interpreter) | D-ARCH servers, isolated sandbox | nothing |
| Describing images | D-ARCH servers | nothing |
| Voice input and output | D-ARCH servers | nothing |
| Web search | D-ARCH servers | the search query only, sent to public search engines; the pages found are fetched by our server |
| Prompts, agents, memories, bookmarks | D-ARCH servers | nothing |
| Conversation titles and summaries | generated by the model you chose | nothing, unless you chose GPT |
Chat history is stored in a database at D-ARCH and is visible only to you. Members of IT Services D-ARCH can access the database for operations and support.
Local services are free of charge and will remain so. The use of GPT is paid for by IT Services D-ARCH. We reserve the right to remove cloud models if costs are too high. If your unit wants to rely on Arch AI permanently in teaching or research, contact us.
A valid ETH account is required. You log in with your ETH username and password through the ETH login page, followed by multi-factor authentication.

| Model | Runs at | Good for |
|---|---|---|
| Local AI (Google Gemma 4) | ETH | everyday chat, text, understanding images, long documents |
| Local Code AI (Qwen) | ETH | code, structured output, technical questions |
| GPT (OpenAI gpt-6) | Microsoft Azure | tasks where the local models are not good enough and no sensitive data is involved |
Please note, available models change over time.

Attach PDF, Word, text or spreadsheet files to a message. Arch AI reads the file and answers based on its content. Large files are indexed for search, so you can ask questions across many pages or many documents. Files and the index stay on ETH servers.
Images attached to a message are described by the model (Gemma 4 and GPT understand images).

Switch on Web search in the “tools” menu. The model then searches the web, reads the pages it finds, and cites them in its answer. The search runs through our own search server, which forwards the search terms to public search engines. Your conversation is never sent to them, only the search query the model formulates.

Images are generated on D-ARCH servers. Two shared agents are ready to use, pick one in the Agents list:
| Agent | Model | Character |
|---|---|---|
| Qwen-Image Agent | Qwen-Image | strong with text in the image and fine detail |
| Z-Image Agent | Z-Image | fast, photorealistic |
Both are worth a try with the same prompt; pick the one whose results you like better.
Describe the image you want in plain language. A single image takes from a few seconds up to a minute. You can also add the image tool to your own agent, for example with a fixed style description for a studio. The images belong to you and may be used freely. We recommend marking AI-generated images as such.

Attach a photo, plan or screenshot and ask about it. Works with Gemma 4 and GPT.


Prompts are saved text templates. Instead of typing the same instruction every time, you save it once and call it with / in the message box. A prompt can contain variables in double curly braces, which you fill in when you use it. Prompts can be shared with other users.
Examples:
Polish this abstract for an English-language journal, keep the technical terms: {{text}}Turn these meeting notes into a structured protocol with decisions and open tasks: {{notes}}Summarise the attached paper in five bullet points for a non-specialist audience.
An agent is a model plus instructions, optionally with files and tools. You build it once and reuse it, or share it with your group.
| What it stores | Use it when | |
|---|---|---|
| Preset | model and parameters | you often switch between settings |
| Prompt | a text template | you repeat the same instruction |
| Skill | instructions for one kind of task | an agent should follow a procedure only when the request calls for it |
| Agent | model, instructions, files, tools | you want a specialised assistant that others can use too |
Open Agents in the sidebar and click Create. Give it a name, choose a model, write the instructions, and add what it needs:

A skill is a set of written instructions for one kind of task, for example a review checklist, writing guidelines or a standard research procedure. Unlike a prompt, you do not send it yourself: an agent picks up the skill on its own when your request matches its description.
.md, .zip or .skill file.$ to apply a skill to your next message by hand.The description decides whether the agent uses the skill, so state clearly when it applies.
Memories are short facts about you that Arch AI adds as context to every conversation, for example your preferred language, your field of work or a current project. Memories are not extracted from your chats; you write them yourself.
Tag conversations with bookmarks to find them again. Click the bookmark icon in a conversation, create a tag, and filter the sidebar by tag.

Arch AI can run code and give you the result: analyse a data file, draw a chart, convert a document, check a calculation. The code runs in an isolated sandbox on D-ARCH servers. Each run gets its own small virtual machine that is discarded afterwards, so nothing can affect other users or our systems. Languages: Python, JavaScript/TypeScript, Go, C/C++, Java, PHP, Rust, Fortran and R.
Two ways to use it:
Good to know:
input() returns an empty string. Put values directly into the code or ask the agent to use parameters.
The model wrote and ran this stair calculator on the first try. The table looks right, but the last column is off: a stair with n risers has n-1 treads, so the run is about 30 cm too long. Code that runs is not code that is correct. Check results you rely on.
For research projects of the department or for projects with sensitive data, the local models are also available through an OpenAI-compatible API (HTTPS, streaming, tool calling).
The API speaks the OpenAI protocol, so any OpenAI client library works. Both examples use the official openai Python package (pip install openai). You receive the host, the token and the model name from us.
from openai import OpenAI
HOST = "https://on-premise-llm.ethz.ch/v1"
TOKEN = "your-api-token"
MODEL = "model-name"
client = OpenAI(base_url=HOST, api_key=TOKEN)
response = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user",
"content": "What is the tallest building in Zurich?"}],
)
print(response.choices[0].message.content)
➜ python ask-a-question.py
The tallest building in Zurich is the **Prime Tower**.
It stands at approximately 126 meters (about 413 feet) tall.
The image is sent as part of the message; the model answers with a list of tags.
import base64
from openai import OpenAI
HOST = "https://on-premise-llm.ethz.ch/v1"
TOKEN = "your-api-token"
MODEL = "model-name"
client = OpenAI(base_url=HOST, api_key=TOKEN)
with open("photo.jpg", "rb") as f:
image = base64.b64encode(f.read()).decode()
response = client.chat.completions.create(
model=MODEL,
messages=[{
"role": "user",
"content": [
{"type": "text",
"text": "Describe this image with 5 to 10 tags, \
comma-separated, nothing else."},
{"type": "image_url",
"image_url": {"url": f"data:image/jpeg;base64,{image}"}},
],
}],
)
print(response.choices[0].message.content)
➜ python tag-an-image.py
Zurich, Switzerland, Cityscape, Architecture, River,
Lake, Alps, Church, Skyline, European
See IT ARCH - AI Tools and contact us if you require API access.
Suggestions and feedback are welcome.
IT Services Group Department of Architecture
servicedesk@arch.ethz.ch
ETH Zürich
IT Services D-ARCH
Thomas Gemperli
HIL C 38.2
Stefano-Franscini-Platz 5
8093 Zürich