# Build a simple agent

The base setup — a provider, a model, and a system prompt. No tools, no external data.

An agent in Bring Your LM is just three things you choose: a **provider** to run
the model, a **model**, and a **system prompt** that tells it its job. For a
surprising amount of everyday help — a knowledgeable assistant, a writing
sounding-board, a patient language partner — that is the whole setup. No tools,
no external data, nothing that has to reach the network beyond your own provider.

This is the base case worth building first, because every other use case starts
here and adds to it.

## What you need

- **A provider you bring.** An OpenAI-compatible, OpenRouter or Claude account
  (with your own API key), or a local Ollama / llama.cpp server on your network. Bring Your
  LM never ships a model — you point it at one you already have access to.
- **A model** that provider serves.
- **No tools.** The agent answers from what the model already knows.

## Build it

1. **Add your provider.** On the Providers screen, tap **+**, give it a name and
   its base URL. If it needs an API key, tap the **API key** field, choose
   **Create new**, and give the key a name and its value — it is kept as a
   [saved secret](/docs/features/providers#saved-secrets) in your device's keystore, and
   the next provider on the same service can pick it instead of a second copy.
2. **Create an agent.** On the Agents screen, tap **+**, then pick the provider
   and model you just set up.
3. **Write the system prompt.** This is where the agent gets its personality and
   its job — the one field that turns a raw model into _your_ assistant.

![The agent form: provider, model, and the system prompt that defines the agent — with no tools attached](/images/simple_agent_form.png)

4. **Start a conversation and ask.** The reply comes straight from the model's
   own knowledge — no lookups, no tools in the loop.

![The agent answering from its own knowledge, no tools involved](/images/simple_conversation.png)

## Make it yours

The system prompt does all the work here, so changing it is how you get a
different assistant:

- **Language practice** — *"You are a patient French conversation partner. Reply
  in simple French, then add a one-line English gloss underneath."*
- **Writing coach** — *"You review my drafts for clarity and cut wordiness.
  Suggest edits, don't rewrite wholesale."*
- **Recipe helper** — *"Suggest simple one-pot meals from the ingredients I
  list."*

When an agent needs to reach beyond what the model knows — today's news, a page
on the web, your own saved notes — that's the next step: attaching a tool. This
simple agent is the foundation it builds on.

More in [Use Cases](/docs/use-cases): [Give an agent a tool — fetch a URL](/docs/use-cases/fetch-tool) · [Run a model fully offline](/docs/use-cases/offline-embedded)

---

[Bring Your LM](/) · [Docs](/docs/features) · [Marketplace](/marketplace)

[Articles](/articles) · [Releases](/releases) · [Bundle Format](/marketplace/bundle-format) · [Marketplace Terms](/terms) · [App Privacy](/privacy) · [Website Privacy](/website-privacy) · [Open Source](/open-source) · [llms.txt](/llms.txt)
