FAQ

Get oriented

Short answers to common questions about the application model and newer framework features.
01

Starting out

What is s-m-r-t?+

A TypeScript application framework built around useful domain objects. It supplies persistence, manifests, generated REST/MCP/CLI interfaces, users, tenants, agents, web data, native-mobile foundations, and a broad set of domain packages.

What is a SAADL?+

Software as Agentic Domain Logic means the same domain operations are available to people through ordinary interfaces and to agents through callable tools. Both resolve through the same models, permissions, tenants, and field policies.

Do I need every package?+

No. Start with smrt-core, then add packages by capability or domain. They share conventions, but the stack is intentionally modular.

Which database should I use?+

SQLite is excellent for development and local-first tools, Postgres is the normal production choice—especially when using row-level security—and DuckDB fits analytical workloads.

02

Application foundation

Can an agent help someone complete a form?+

Yes. Standard controls can publish their identity, meaning, options, constraints, and state to a chat, voice, tutorial, or test adapter. An agent may point to a field or stage a proposed value, but applying, clearing, or undoing requires confirmation by default and secret controls remain unavailable.

Are users and tenants included?+

Yes. smrt-users includes sessions, memberships, hierarchical tenants, roles, permissions, access requests, and SvelteKit integration. smrt-tenancy enforces data scope on decorated models.

How do tenant relationships work?+

Parent/child tenants describe organization. Memberships connect a user to a tenant with one role. Profile relationships describe domain links between people, organizations, or agents. They are separate on purpose.

Can permissions differ between REST, MCP, WebMCP, and CLI?+

Yes. Each model declares which operations each interface exposes. Manifest-derived permission slugs and runtime principal checks keep interface policy connected to authorization.

03

New in 0.38

What does it mean that agents learn?+

Learning is opt-in. Agents recall confident, scoped memories before work and reinforce or decay them from outcomes afterward. Personas can propose instruction changes, but activating those changes requires a separate permissioned human approval.

Is smrt-mobile a JavaScript wrapper?+

No. Shared behavior is Kotlin Multiplatform; Android uses Compose and native adapters, while iOS uses SwiftUI and Apple frameworks. The shared layer covers offline queues, packs, auth, networking, evidence, and presenter state.

What is hydration in smrt-web?+

SvelteKit server results seed generated browser collections so the client does not repeat the initial fetch. Live updates, persisted cache versioning, and the offline outbox continue from that initial state.

What does WebMCP expose?+

s-m-r-t generates browser tool descriptors for exposed collection actions and registers them with document.modelContext. CRUD tools execute through the normal REST client as the signed-in page user, preserving authentication, tenant, permission, and field policy.