# `WardrikCore.Principal`

Someone or something that can act, such as a person or a service.

    %WardrikCore.Principal{id: "user:maria", attributes: %{team: "billing"}}

  * The agent's own comes from `WardrikCore.start_agent/2`'s `:principal`.
  * A message's sender comes from `WardrikCore.ask/3`. The turn acts for them.
  * `id` and `attributes` are your app's. Wardrik never reads them.

# `t`

```elixir
@type t() :: %WardrikCore.Principal{attributes: map(), id: String.t()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
