# 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