|
| 1 | +--- |
| 2 | +title: FAQ |
| 3 | +description: Common questions about Appam, including how it compares with Rig, how configuration works, and when to use sessions, traces, and Python tools. |
| 4 | +--- |
| 5 | + |
| 6 | +This page answers the questions that usually come up once you move past a single prompt and start building real agents with Appam. |
| 7 | + |
| 8 | +## How does Appam differ with Rig? |
| 9 | + |
| 10 | +Appam and Rig are both Rust libraries for LLM-powered systems, but they optimize for different workloads. |
| 11 | + |
| 12 | +- **Rig** is the broader SDK. It has a larger provider surface, first-class embeddings and vector stores, more multimodal capabilities, and a larger companion-crate ecosystem. |
| 13 | +- **Appam** is more opinionated about the runtime loop. It focuses on long-horizon, tool-using agents with streaming, continuation handling, durable session history, JSONL traces, and provider portability behind one orchestration surface. |
| 14 | +- If your workload is mostly "connect to models, embeddings, and retrieval systems from Rust," Rig is usually the broader fit. |
| 15 | +- If your workload is "run inspectable agents over many turns, resume them later, and understand exactly what happened," Appam is usually the better fit. |
| 16 | + |
| 17 | +In practice, Appam spends more of its design budget on agent operations, while Rig spends more of its design budget on general Rust GenAI application building. |
| 18 | + |
| 19 | +## Which construction style should I use? |
| 20 | + |
| 21 | +Use the smallest surface that still matches the job: |
| 22 | + |
| 23 | +- [`Agent::quick()`](/docs/getting-started/quickstart) for scripts, smoke tests, and fast prototypes. |
| 24 | +- [`Agent::new(name, model)`](/docs/core-concepts/agents) when you want builder ergonomics with provider auto-detection from the model string. |
| 25 | +- [`AgentBuilder`](/docs/core-concepts/agents) when you need explicit runtime control such as retries, thinking, caching, rate limiting, traces, history, or Azure and Bedrock configuration. |
| 26 | +- [`TomlAgent::from_file(...)`](/docs/guides/toml-configuration) when prompts and tool declarations should live on disk instead of in Rust source. |
| 27 | + |
| 28 | +If you are unsure, start with `Agent::new(...)` and move to `AgentBuilder` once you need operational controls. |
| 29 | + |
| 30 | +## Does Appam automatically load `appam.toml`? |
| 31 | + |
| 32 | +No. The default runtime path starts from environment-backed config and then applies agent-level overrides. |
| 33 | + |
| 34 | +If you want to use a global `appam.toml`, load it explicitly with [`load_global_config(...)`](/docs/core-concepts/configuration). If you want file-backed agent definitions, use [`TomlAgent::from_file(...)`](/docs/guides/toml-configuration). |
| 35 | + |
| 36 | +That distinction matters: |
| 37 | + |
| 38 | +- `appam.toml` is for global application config that your code chooses to load. |
| 39 | +- agent TOML files are for `TomlAgent` definitions. |
| 40 | + |
| 41 | +## When should I enable session history? |
| 42 | + |
| 43 | +Enable session history when the conversation needs to survive the current process. |
| 44 | + |
| 45 | +Typical cases: |
| 46 | + |
| 47 | +- you want to resume a session later with `continue_session(...)` |
| 48 | +- you need to inspect prior runs after a restart |
| 49 | +- you want listing, retention, or operational tooling over stored sessions |
| 50 | + |
| 51 | +If every run is disposable and you do not need to continue or inspect it later, you can leave history off. See [Session Persistence](/docs/guides/session-persistence) and [Sessions](/docs/core-concepts/sessions). |
| 52 | + |
| 53 | +## What is the difference between logs and traces? |
| 54 | + |
| 55 | +They are related, but they are not the same thing. |
| 56 | + |
| 57 | +- **Logs** are Appam's own runtime logging output. They tell you what the framework was doing. |
| 58 | +- **Traces** are per-session artifacts. They capture structured agent events such as streamed content, reasoning, tool calls, tool results, and completion state. |
| 59 | + |
| 60 | +If you need to debug the framework or infrastructure behavior, look at logs. If you need to understand one specific agent run, look at traces. Appam keeps those concerns separate on purpose. |
| 61 | + |
| 62 | +## Can Appam resume a session after restart? |
| 63 | + |
| 64 | +Yes, if history is enabled and the session was saved. |
| 65 | + |
| 66 | +The standard pattern is: |
| 67 | + |
| 68 | +1. enable session history |
| 69 | +2. run the first session |
| 70 | +3. call `continue_session(...)` later with the saved session ID |
| 71 | + |
| 72 | +That is one of Appam's core strengths for long-running or interruptible workflows. See [Session Persistence](/docs/guides/session-persistence). |
| 73 | + |
| 74 | +## Should I write tools in Rust or Python? |
| 75 | + |
| 76 | +Prefer Rust unless you have a clear reason not to. |
| 77 | + |
| 78 | +Rust tools integrate best with: |
| 79 | + |
| 80 | +- typed schemas |
| 81 | +- managed app and session state |
| 82 | +- compile-time checks |
| 83 | +- the main Appam runtime model |
| 84 | + |
| 85 | +Python tools are useful when you already have trusted scripts on disk or want TOML-defined tools without rebuilding the binary. They are still powerful, but they run with the same process privileges, so only load Python tools you trust. |
| 86 | + |
| 87 | +## Do I need to use provider clients directly? |
| 88 | + |
| 89 | +Usually no. |
| 90 | + |
| 91 | +Most Appam applications should build an agent and let the runtime own provider selection, streaming, tool execution, and continuation mechanics. The common entry points are: |
| 92 | + |
| 93 | +- `Agent::quick(...)` |
| 94 | +- `Agent::new(...)` |
| 95 | +- `AgentBuilder` |
| 96 | +- `TomlAgent::from_file(...)` |
| 97 | + |
| 98 | +Provider-specific modules matter when you need provider-specific tuning, auth behavior, or configuration details, not for the normal happy path. |
0 commit comments