Skip to content
Weik.ioDocs
2026.2
Try Weik.io

Events and the entity store

Weik.io 2026.2

Create channels, read and resend stored events, handle dead letters, move a reader and manage entity types.

On this page

Channels, event sources and event subscriptions are integrations, so you publish them with weikio apply and run them with weikio deploy. Each environment keeps the events of its channels for 30 days within its budget, and weikio events lists, shows, resends and purges them.

An event that an integration couldn’t handle after its last retry is kept as a dead letter with the integration it failed in and the reason. weikio deadletters resend sends it back to that integration once you have fixed the cause, and weikio deadletters discard deletes it. The entity store keeps the latest value of each entity of a type, with the size, age and history limits of the type’s policy in each environment.

Commands on this page#

Command What it does
weikio get channels List a project’s event channels with their publishers and readers.
weikio channel create Create an event channel.
weikio channel set Change an event channel.
weikio delete channel Delete an event channel that isn’t deployed, with its versions and its own variables and secrets.
weikio rename channel Rename an event channel.
weikio get eventsources List the event sources of a project.
weikio get eventsubscriptions List the event subscriptions of a project.
weikio get streams List an environment’s streams and entity store buckets with their usage and limits.
weikio get record Print a record’s kind and address from its ID.
weikio events list List an environment’s stored events.
weikio events show Print one stored event.
weikio events purge Delete the stored events that match the filters.
weikio deadletters list List the dead letters of an environment.
weikio deadletters show Print one dead letter with its event.
weikio deadletters resend Resend dead letters to the integrations they failed in.
weikio deadletters discard Discard dead letters.
weikio get readers List the readers of the integrations deployed in an environment and how far each has come with its events.
weikio reader skip Pass over every event that waits for the integration’s reader, so it receives only the events published from now on.
weikio reader rewind Deliver a reader’s events again from a sequence number.
weikio events resend Publish stored events again.
weikio entities list List the entities of one type in id order.
weikio entities get Print one entity.
weikio entities delete Delete one entity.
weikio get entity-store-policies List an environment’s entity types with their policies and usage.
weikio describe entity-store-policy Show an entity type’s policy and usage.
weikio entitystore policy set Create an entity type in an environment, or change its policy.
weikio entitystore policy delete Delete an entity type and its entities from an environment.
weikio rename entity-store-policy Rename an entity type in every environment that has it.

The flags every command accepts, such as --env, --project, -o and --context, are on the CLI reference page and are left out of the tables below.

weikio get channels#

List a project’s event channels with their publishers and readers.

Terminal
weikio get channels [--project P]

Who can run it: a grant on the project whose role has read.

API: GET /api/v1/projects/{project}/channels.

Also written as weikio get eventchannels.

weikio channel create#

Create an event channel.

Terminal
weikio channel create <p>/<name> [--type T] [--param k=v ...] [--description S] [--retention 30d|0]
Argument or flag What it does
<channel> The channel, as project/name.
--type <type> The sink kamelet to deliver to, without its -sink suffix, such as http, or ‘’ for none.
--param <param> A sink parameter, as key=value, repeated for each parameter.
--description <description> What the channel is for.
--retention <retention> How long events are kept: 30d (the environment’s default) or 0 (not stored).
--reason <reason> Reason for the change, stored with the audit record.

Who can run it: a grant on the project whose role has author.

API: PUT /api/v1/configuration.

Also written as weikio create channel.

Terminal
$ weikio apply -f ./finance/events/
You see
Target: https://hub.example, project finance (from finance/project.yaml)
event-channel finance/invoice-created unchanged
event-channel finance/invoice-alerts created (version 0.1.0, built in 14.2 s, delivers to slack)
event-source finance/invoice-files created (version 0.1.0, built in 16.8 s, aws-s3 -> invoice-files)
event-subscription finance/files-to-invoices created (version 0.1.0, built in 15.1 s, invoice-files -> invoice-created)
event-subscription finance/alert-on-invoices created (version 0.1.0, built in 14.9 s, invoice-created -> invoice-alerts)

Nothing new is running yet. To run it:
  weikio deploy -f ./finance/events --env devtest
Terminal
$ weikio deploy -f ./finance/events --env devtest
You see
Target: https://hub.example, project finance (from finance/project.yaml), environment devtest (--env)
Deploying finance/invoice-alerts 0.1.0 (latest) to devtest...
Deploying finance/invoice-files 0.1.0 (latest) to devtest...
Deploying finance/files-to-invoices 0.1.0 (latest) to devtest...
Deploying finance/alert-on-invoices 0.1.0 (latest) to devtest...
deployment devtest/finance/invoice-alerts created (version 0.1.0)
deployment devtest/finance/invoice-files created (version 0.1.0)
deployment devtest/finance/files-to-invoices created (version 0.1.0)
deployment devtest/finance/alert-on-invoices created (version 0.1.0)

weikio channel set#

Change an event channel.

Terminal
weikio channel set <p>/<name> [--type T] [--param k=v ...] [--description S] [--retention 30d|0]
Argument or flag What it does
<channel> The channel, as project/name.
--type <type> The sink kamelet to deliver to, without its -sink suffix, such as http, or ‘’ for none.
--param <param> A sink parameter, as key=value, repeated for each parameter.
--description <description> What the channel is for.
--retention <retention> How long events are kept: 30d (the environment’s default) or 0 (not stored).
--reason <reason> Reason for the change, stored with the audit record.

Who can run it: a grant on the project whose role has author.

API: PUT /api/v1/configuration, GET /api/v1/projects/{project}/channels, GET /api/v1/environments/{environment}/projects/{project}/deployments.

weikio delete channel#

Delete an event channel that isn’t deployed, with its versions and its own variables and secrets.

Terminal
weikio delete channel <p>/<name> [-y]
Argument or flag What it does
<channel> The channel, as project/name.
-y, --yes Don’t ask for confirmation.
--reason <reason> Reason for the change, stored with the audit record.

Who can run it: a grant on the project whose role has author.

API: GET /api/v1/projects/{project}/integrations/{name}, DELETE /api/v1/projects/{project}/integrations/{name}?dryRun=true, DELETE /api/v1/projects/{project}/integrations/{name}.

Also written as weikio delete eventchannel.

weikio rename channel#

Rename an event channel.

Terminal
weikio rename channel <p>/<name> <new-name>
Argument or flag What it does
<channel> The channel, as project/name.
<new-name> New name in the same project.
--reason <reason> Reason for the change, stored with the audit record.

Who can run it: a grant on the project whose role has author.

API: GET /api/v1/projects/{project}/integrations/{name}, PATCH /api/v1/projects/{project}/integrations/{name}.

weikio get eventsources#

List the event sources of a project.

Terminal
weikio get eventsources [--project P]

Who can run it: a grant on the project whose role has read.

API: GET /api/v1/projects/{project}/integrations?type=event-source, GET /api/v1/projects/{project}/integrations/{name}/status.

weikio get eventsubscriptions#

List the event subscriptions of a project.

Terminal
weikio get eventsubscriptions [--project P]

Who can run it: a grant on the project whose role has read.

API: GET /api/v1/projects/{project}/integrations?type=event-subscription, GET /api/v1/projects/{project}/integrations/{name}/status.

weikio get streams#

List an environment’s streams and entity store buckets with their usage and limits.

Terminal
weikio get streams [--env E]

Who can run it: a grant whose role has read in the environment.

API: GET /api/v1/environments/{environment}/streams.

weikio get record#

Print a record’s kind and address from its ID.

Terminal
weikio get record <id>
Argument or flag What it does
<id> The record’s ID, from a listing, an audit record or the admin UI.

Who can run it: any API key. The record is shown as its own read shows it.

API: GET /api/v1/records/{uid}.

weikio events list#

List an environment’s stored events. The FAMILY column tells channel events (ev), webhook receipts (hook), transfer run records (mft) and entity store changes (es) apart.

Terminal
weikio events list [<p>/<channel>] [--env E] [--family ev|hook|mft|es] [--api A] [--integration N] [--type <p>/<type>] [--record-id ID] [--since 1h | --from T --to T] [--before STREAM.SEQ | --after STREAM.SEQ] [--order newest|oldest] [--source <p>/<n>] [--with-body] [--limit N]
Argument or flag What it does
<channel> The channel, as project/name.
--family <family> The family: ev (channel events), hook (webhook receipts), mft (transfer runs) or es (entity store events).
--api <api> The API whose webhook receipts to list.
--integration <integration> The transfer whose runs to list, as project/name.
--type <type> The entity type, as project/type.
--record-id <record-id> The ID of an integration or API, deleted or not, whose events to list, including the ones it published.
--before <before> Read the events stored before this position, as stream.seq, such as events.48213.
--after <after> Read the events stored after this position, as stream.seq, such as events.48213.
--order <order> The order: newest or oldest first, by default newest.
--source <source> Show only the events this integration published, as project/name.
--with-body Print each event’s body in its row.
--since <since> How far back to read, such as 1h.
--from <from> Start of the window.
--to <to> End of the window.
--limit <limit> How many events to read, at most 1,000.

Who can run it: a grant whose role has read in the environment.

API: GET /api/v1/environments/{environment}/events?family=&channel={p}/{name}&project={p}&api=&integration=&type={p}/{type}&recordUid=&from=&to=&source={p}/{name}&withBody=true&limit=&before=&after=&order=.

Terminal
$ weikio events list finance/invoice-created --env production --since 1h
You see
SEQ     STREAM   TIME                      FAMILY   SOURCE                       AGENT         BYTES   RESEND OF
48211   events   2026-09-16 13:02:11 UTC   ev       finance/erp-invoice-export   agent-fi-02   1204    -
48212   events   2026-09-16 13:03:11 UTC   ev       finance/erp-invoice-export   agent-fi-02   1187    -
48213   events   2026-09-16 13:04:40 UTC   ev       finance/invoice-files        agent-fi-02   2310    -

weikio events show#

Print one stored event.

Terminal
weikio events show [<p>/<channel>] [--env E] [--stream S] --seq N [--raw]
Argument or flag What it does
<channel> The channel the event belongs to, as project/name.
--stream <stream> The event’s stream, events or entities, from the STREAM column, by default events when a channel is given.
--seq <seq> The event’s sequence number in its stream.
--raw Print the body as it was stored.

Who can run it: a grant whose role has read in the environment.

API: GET /api/v1/environments/{environment}/streams/{stream}/events/{seq}.

Terminal
$ weikio events show finance/invoice-created --env production --seq 48213
You see
Seq:      48213
Subject:  weikio.data.01k5h2m8q3x7c9d4f6g1j0n2p4.ev.01k5h2n1r6t8v0w2y4z6a8b0c2.01k5h3a7b9d1f3g5h7j9k1m3n5
Time:     2026-09-16 13:04:40 UTC
Source:   finance/invoice-files
Headers:  Content-Type: application/json
          Weikio-Agent-Id: 7c1e...
          Weikio-Source: finance/invoice-files

{
  "invoiceId": "INV-2026-0912",
  ...
}

weikio events purge#

Delete the stored events that match the filters. A purge removes stored events before the environment’s retention would, for example a webhook body with personal data. It’s written to the audit log, and a purge that runs past the 10-minute wait finishes when you run it again.

Terminal
weikio events purge [<p>/<channel>] [--env E] [--family ev|hook|mft|es] [--api A] [--integration N] [--type <p>/<type>] [--record-id ID] [-y]
Argument or flag What it does
<channel> The channel, as project/name.
--family <family> The family: ev (channel events), hook (webhook receipts), mft (transfer runs) or es (entity store events).
--api <api> The API whose webhook receipts to remove.
--integration <integration> The transfer whose runs to remove, as project/name.
--type <type> The entity type, as project/type.
--record-id <record-id> The ID of an integration or API, deleted or not, whose events to remove, including the ones it published.
-y, --yes Don’t ask for confirmation.
--reason <reason> Reason for the change, stored with the audit record.

Who can run it: a grant whose role has operate in the environment.

API: POST /api/v1/environments/{environment}/streams/{stream}/events/_purge.

weikio deadletters list#

List the dead letters of an environment.

Terminal
weikio deadletters list [<p>/<channel>] [--env E] [--integration P/N | --record-id ID] [--since 1h | --from T --to T] [--before SEQ | --after SEQ] [--order newest|oldest] [--limit N]
Argument or flag What it does
<channel> The channel the events came from, as project/name.
--integration <integration> The integration the events failed in, as project/name.
--record-id <record-id> The ID of the integration the events failed in, deleted or not.
--since <since> Dead letters that failed in the last duration, such as 1h.
--from <from> The start of the window, by when the dead letters failed.
--to <to> The end of the window, by when the dead letters failed.
--before <before> Read dead letters older than this seq.
--after <after> Read dead letters newer than this seq, or 0 for the oldest.
--order <order> The order: newest or oldest first, by default newest.
--limit <limit> How many dead letters to read, at most 1,000.

Who can run it: a grant whose role has read in the environment.

API: GET /api/v1/environments/{environment}/dead-letters?project={p}&integration={n}&recordUid=&channel={p}/{name}&from=&to=&limit=&before=&after=&order=.

weikio deadletters show#

Print one dead letter with its event.

Terminal
weikio deadletters show --seq N [--env E] [--raw]
Argument or flag What it does
--seq <seq> The dead letter’s sequence number, from the SEQ column.
--raw Print the event’s body as it was stored.

Who can run it: a grant whose role has read in the environment.

API: GET /api/v1/environments/{environment}/dead-letters/{seq}.

weikio deadletters resend#

Resend dead letters to the integrations they failed in. Each dead letter goes back only to the integration it failed in, and its copy is removed once sent.

Terminal
weikio deadletters resend (--seq N [--seq N ...] | [<p>/<channel>] [--integration P/N | --record-id ID] [--since 1h | --from T --to T] | --all) [--env E] [-y]
Argument or flag What it does
<channel> The channel the events came from, as project/name.
--seq <seq> The sequence number of a dead letter to resend, repeated for each dead letter.
--all Resend every dead letter you may act on.
-y, --yes Don’t ask for confirmation.
--reason <reason> Reason for the change, stored with the audit record.
--integration <integration> The integration the events failed in, as project/name.
--record-id <record-id> The ID of the integration the events failed in, deleted or not.
--since <since> Dead letters that failed in the last duration, such as 1h.
--from <from> The start of the window, by when the dead letters failed.
--to <to> The end of the window, by when the dead letters failed.

Who can run it: a grant whose role has operate in the environment.

weikio deadletters discard#

Discard dead letters.

Terminal
weikio deadletters discard (--seq N [--seq N ...] | [<p>/<channel>] [--integration P/N | --record-id ID] [--since 1h | --from T --to T] | --all) [--env E] [-y]
Argument or flag What it does
<channel> The channel the events came from, as project/name.
--seq <seq> The sequence number of a dead letter to discard, repeated for each dead letter.
--all Discard every dead letter you may act on.
-y, --yes Don’t ask for confirmation.
--reason <reason> Reason for the change, stored with the audit record.
--integration <integration> The integration the events failed in, as project/name.
--record-id <record-id> The ID of the integration the events failed in, deleted or not.
--since <since> Dead letters that failed in the last duration, such as 1h.
--from <from> The start of the window, by when the dead letters failed.
--to <to> The end of the window, by when the dead letters failed.

Who can run it: a grant whose role has operate in the environment.

weikio get readers#

List the readers of the integrations deployed in an environment and how far each has come with its events.

Terminal
weikio get readers [<p>/<channel>] [--integration <p>/<n>] [--env E] [--project P]
Argument or flag What it does
<channel> The channel read, as project/name or, in the project, the name alone.
--integration <integration> The reading integration, as project/name or, in the project, the name alone.

Who can run it: a grant whose role has read in the environment.

API: GET /api/v1/environments/{environment}/readers?project={p}&integration={n}&channel={p}/{name}.

weikio reader skip#

Pass over every event that waits for the integration’s reader, so it receives only the events published from now on. Use it when a reader is far behind and the waiting events no longer matter. The command says how many events it passes over and asks first.

Terminal
weikio reader skip <p>/<integration> [--channel C | --transfer T | --type T] [--env E] [-y]
Argument or flag What it does
<integration> The deployed integration, as project/name.
--channel <channel> The channel the reader receives events from, as project/name or, in the integration’s project, the name alone.
--transfer <transfer> The transfer whose records the reader receives, as project/name or, in the integration’s project, the name alone.
--type <type> The entity type whose changes the reader receives, as project/type or, in the integration’s project, the type alone.
-y, --yes Don’t ask for confirmation.
--reason <reason> Reason for the change, stored with the audit record.

Who can run it: a grant whose role has operate in the environment.

weikio reader rewind#

Deliver a reader’s events again from a sequence number. Use it to process events again from a known point, for example after fixing a bug in the reader. Take the sequence number from the SEQ column of weikio events list.

Terminal
weikio reader rewind <p>/<integration> [--channel C | --transfer T | --type T] --to-seq N [--env E] [-y]
Argument or flag What it does
<integration> The deployed integration, as project/name.
--channel <channel> The channel the reader receives events from, as project/name or, in the integration’s project, the name alone.
--transfer <transfer> The transfer whose records the reader receives, as project/name or, in the integration’s project, the name alone.
--type <type> The entity type whose changes the reader receives, as project/type or, in the integration’s project, the type alone.
--to-seq <to-seq> The event’s sequence number to deliver again from. Take it from the SEQ column.
-y, --yes Don’t ask for confirmation.
--reason <reason> Reason for the change, stored with the audit record.

Who can run it: a grant whose role has operate in the environment.

weikio events resend#

Publish stored events again. The event is published again with a Weikio-Resend-Of header that refers to the original, so every reader of the channel receives it again.

Terminal
weikio events resend [<p>/<channel>] [--env E] [--stream S] --seq N [--seq N ...] [--to <p>/<integration>] [--dry-run] [-y]
Argument or flag What it does
<channel> The channel, as project/name.
--stream <stream> The event’s stream, events or entities, from the STREAM column, by default events when a channel is given.
--seq <seq> The sequence number of an event to resend, repeated for each event.
--to <to> The only integration to receive it, as project/name, by default every integration that reads it.
--dry-run Print what would happen and change nothing.
-y, --yes Don’t ask for confirmation.
--reason <reason> Reason for the change, stored with the audit record.

Who can run it: a grant whose role has operate in the environment.

API: POST /api/v1/environments/{environment}/streams/{stream}/events/{seq}/resend.

Terminal
$ weikio events resend finance/invoice-created --env production --seq 48213 -y
You see
Target: https://hub.example, project finance (argument), environment production (--env)
event 48213 resent as 48397 (Weikio-Resend-Of: 48213)

weikio entities list#

List the entities of one type in id order.

Terminal
weikio entities list <p>/<type> [--env E] [--updated-since T] [--id-prefix S] [--limit N] [--after ID | --before ID]
Argument or flag What it does
<type> The type, as project/type.
--updated-since <updated-since> Show entities updated since this time, such as 1h or 2026-09-01.
--id-prefix <id-prefix> Show only entities whose ID starts with this text.
--limit <limit> Number of entities to read, at most 1,000.
--before <before> Show the entities before this ID.
--after <after> Show the entities after this ID.

Who can run it: a grant whose role has read in the environment.

API: GET /api/v1/environments/{environment}/projects/{project}/entities/{type}?updatedSince&idPrefix&limit&before&after.

weikio entities get#

Print one entity.

Terminal
weikio entities get <p>/<type> <id> [--env E] [--revisions]
Argument or flag What it does
<type> The type, as project/type.
<id> The entity’s ID.
--revisions Print the entity’s kept revisions, newest first.

Who can run it: a grant whose role has read in the environment.

API: GET /api/v1/environments/{environment}/projects/{project}/entities/{type}/{id}.

weikio entities delete#

Delete one entity.

Terminal
weikio entities delete <p>/<type> <id> [--env E] [-y]
Argument or flag What it does
<type> The type, as project/type.
<id> The entity’s ID.
-y, --yes Don’t ask for confirmation.
--reason <reason> Reason for the change, stored with the audit record.

Who can run it: a grant whose role has operate in the environment.

API: DELETE /api/v1/environments/{environment}/projects/{project}/entities/{type}/{id}.

weikio get entity-store-policies#

List an environment’s entity types with their policies and usage.

Terminal
weikio get entity-store-policies [--env E] [--project P]

Who can run it: a grant whose role has read in the environment.

API: GET /api/v1/environments/{environment}/entity-store, GET /api/v1/environments/{environment}/projects/{project}/entity-store.

weikio describe entity-store-policy#

Show an entity type’s policy and usage.

Terminal
weikio describe entity-store-policy <p>/<type> [--env E]
Argument or flag What it does
<type> The type, as project/type.

Who can run it: a grant whose role has read in the environment.

API: GET /api/v1/environments/{environment}/projects/{project}/entity-store/{type}/policy.

weikio entitystore policy set#

Create an entity type in an environment, or change its policy. The policies of all the environment’s entity types together can’t exceed its entity store budget, and the command prints how much of the budget is allocated.

Terminal
weikio entitystore policy set <p>/<type> [--env E] [--max-bytes SIZE] [--max-age LENGTH] [--history N] [--max-value-bytes SIZE] [-y]
Argument or flag What it does
<type> The type, as project/type.
--max-bytes <max-bytes> Maximum size the type may take, such as 512MiB.
--max-age <max-age> Maximum age of an entity, such as 30d.
--history <history> Number of past values kept for an entity.
--max-value-bytes <max-value-bytes> Maximum size of one entity, such as 64KiB.
-y, --yes Don’t ask for confirmation.
--reason <reason> Reason for the change, stored with the audit record.

Who can run it: a grant whose role has entity-store-policy in the environment.

API: PUT /api/v1/environments/{environment}/projects/{project}/entity-store/{type}/policy.

Terminal
$ weikio entitystore policy set finance/invoice --env production --max-bytes 512MiB --history 2 -y
You see
Target: https://hub.example, project finance (argument), environment production (--env)
entity-store-policy production/finance/invoice created (maxBytes 512 MiB, history 2, revision 57)
production entity store budget: 512 MiB of 2 GiB allocated

weikio entitystore policy delete#

Delete an entity type and its entities from an environment.

Terminal
weikio entitystore policy delete <p>/<type> [--env E] [-y]
Argument or flag What it does
<type> The type, as project/type.
-y, --yes Don’t ask for confirmation.
--reason <reason> Reason for the change, stored with the audit record.

Who can run it: a grant whose role has entity-store-policy in the environment.

API: DELETE /api/v1/environments/{environment}/projects/{project}/entity-store/{type}/policy.

weikio rename entity-store-policy#

Rename an entity type in every environment that has it.

Terminal
weikio rename entity-store-policy <p>/<type> <new-name>
Argument or flag What it does
<type> The type, as project/type.
<new-name> The new name.
--reason <reason> Reason for the change, stored with the audit record.

Who can run it: a grant whose role has entity-store-policy in the environment.

API: PATCH /api/v1/projects/{project}/entity-store/{type}.

Exit codes#

The commands on this page exit with the codes in the exit code table: 0 on success, 1 when the hub refuses a change, 2 for a usage error, 3 when the key is missing or not allowed, 4 when something isn’t found, 5 for a conflicting change, 6 when the hub can’t be reached and 8 when a document isn’t valid.

See also#