# Config
The custom features (agents, workflows, actions and commands) are located either
in a local folder or in a js plugin.
You can declare your custom features in a config file.
Create a `~/.config/agent-smith/config.yml` file:
```yml
promptfile: /home/me/lm/features/prompt.txt
datadir: /home/me/lm/data
features:
- /home/me/lm/features/dist
plugins:
- "@agent-smith/feat-git"
backends:
default: "llamacpp"
llamacpp:
type: "openai"
url: "http://localhost:8080/v1"
```
All are optional. The `promptfile` is a file that can be used for input for
inference agents. The `datadir` specifies the data storage directory.
See the Agents
section for more info about input modes.
Update your client config using this file by running this command:
```bash
lm conf ~/.config/agent-smith/config.yml
```
This processes the YAML config and populates the SQLite database at
`~/.config/agent-smith/config.db`. The database contains 17 tables including
agents, workflows, actions, adaptaters, commands, tools, backends, settings
and more.
## Backends
Supported backends:
- [Llama.cpp](https://github.com/ggerganov/llama.cpp): the first class citizen
- Any server that supports an OpenAI compatible API
To configure your backends in `config.yml`:
```yaml
backends:
default: "llamacpp"
llamacpp:
type: "openai"
url: "http://localhost:8080/v1"
openrouter:
type: "openai"
url: "https://openrouter.ai/api/v1"
apiKey: "$OPENROUTER_API_KEY"
```
The backends listed with a URL are registered in the SQLite `backend` table.
By default the CLI will use the backend configured in `default`.
List available backends:
```bash
lm backends
```
To change the default backend:
```bash
lm backend openrouter
```
To use a given backend once for a given agent:
```bash
lm myagent "my prompt" -b koboldcpp
```
## Local features
The features are declared in a folder (here `/home/me/lm/features/dist`) using
these subfolders:
- `agents/` — Agent definitions (`.yml` files)
- `actions/` — Action scripts (`.js`, `.py`, `.yml` files)
- `workflows/` — Workflow pipelines (`.yml` files)
- `adaptaters/` — Data adapters (`.js` files)
- `cmds/` — Custom commands (`.js` files)
- `skills/` — Skill documents (`.md` files)
Every new feature will be detected when running `lm update` and then be available
as a command or tool.
Next: Agents