ingestion-as-a-service · device fleets

Ingestion-as-a-service for device fleets

Cameras, IoT and edge devices upload over FTP, FTPS or HTTP(S). Files land in your own bucket, laid out your way. Typed events land in your pipeline. One engineered path, not three AWS services bolted together.

ftp · ftps · http(s) · presigned your s3 / r2 / minio / b2 upload.completed

Screenshot-style mock of the Ingestik console: a live activity stream of upload.completed events from a camera fleet, usage and quota meters, the tenant’s own storage bucket configured as target with encrypted credentials, and a device list with FTP, FTPS and HTTP protocol badges. Switchable tabs show the device fleet, BYOB storage targets, webhook subscriptions and API keys.

01the difference in kind

A pipe stops where the work begins.

AWS Transfer Family moves authenticated bytes into one bucket you own. Full stop. Everything your product actually needs happens after the bytes land. That is the part Ingestik is built for.

AWS Transfer Family the pipe
  • Authenticated bytes into one S3 bucket. Full stop.
  • Events? Wire up S3 notifications yourself.
  • Tenancy, devices and quotas: your problem, in IAM.
Ingestik after the bytes land
  • Every tenant’s files in their own bucket: S3, R2, MinIO or B2, credentials stored encrypted.
  • A typed event for every upload, delivered into your pipeline, deduplicated and retried.
  • Devices, API keys, plans, quotas and usage metering in one control plane.

02pipeline

Ingest → your bucket → typed events.

Small files take the direct path: a Rust HTTP service, straight to storage. Large files and FTP go through a durable queue and worker, so a transient error never costs a recording.

ingest-pipeline · live view bytes · typed event
path A · HTTP(S) direct put, small files path B · FTP/FTPS through the durable queue

03platform surface

Transfer Family, with the missing half.

protocols

FTP, FTPS and HTTP(S) with presigned uploads. Whatever the firmware already speaks.

ftp:21 · ftps:tls · https:443

byob storage

Every tenant lands in their own bucket, credentials stored encrypted and layout templated.

s3 · r2 · minio · b2

typed events

One typed webhook per completed upload, from a transactional outbox. Deduplicated, retried.

upload.completed

fleet control plane

Devices, API keys, tenants and plans in one place. No IAM contortions.

devices · keys · tenants

durable queue

Large files and FTP ride a queue and worker, so transient errors don’t burn retries.

queue → worker → s3

quotas & metering

Plan limits and usage metering per tenant, enforced at the platform edge.

usage · quotas · plans

comparison · aws-transfer-family vs ingestik
capability AWS Transfer Family Ingestik
Protocols SFTP / FTPS / FTP FTPS / FTP + HTTP(S) & presigned uploads
Storage target One S3 or EFS you own Per-tenant BYOB across S3, R2, MinIO and B2, credentials stored encrypted
Post-upload events Wire up S3 event notifications yourself Typed webhook delivery built in, from a transactional outbox, deduplicated and retried
Fleet management IAM / IdP users Devices, API keys, tenants, plans, quotas, usage metering
Durability AWS-grade Durable queue and retry, so transient errors don’t burn retries
Pricing ~$216/mo per protocol + $0.04/GB No per-protocol floor

No SFTP yet. Cameras, IoT and edge devices speak FTP, FTPS and HTTP, and we build for what the hardware actually does.

04for developers

Three steps. One event.

  1. 01

    Point the fleet at it

    Devices upload over FTP, FTPS or HTTP(S)/presigned, whatever the firmware already speaks. No agents, no rewrites.

  2. 02

    Bytes land in your bucket

    Your own S3, R2, MinIO or B2, on a templated key layout like {tenant}/YYYY/MM/DD/…. Small files go direct; large files and FTP ride the durable queue.

  3. 03

    Consume one typed event

    Every completed upload emits a typed webhook from a transactional outbox, deduplicated on retries, so your pipeline sees it exactly once.

webhook · upload.completed POST → your endpoint
{
  "id": "evt_upload_9f3c41",
  "type": "upload.completed",
  "tenant": "acme-fleet",
  "device": "cam-042",
  "object": {
    "bucket": "acme-recordings",
    "key": "acme-fleet/2026/07/04/cam-042/153012.mp4",
    "size": 48211394
  },
  "delivery": {
    "attempt": 1,
    "deduplicated": true
  }
}

05the closing argument

Price isn’t the headline. It’s the ending.

~$216/mo

per protocol. That is AWS Transfer Family’s floor before the first byte moves, plus $0.04 per GB.

No floor

Ingestik has no per-protocol charge. Enable every protocol your fleet speaks; pay for what actually moves.

Point a device at it.

Ingest, storage and eventing as one managed system, into your bucket and into your pipeline.

Pre-public. We are onboarding early fleets one at a time.

no self-serve yet · we reply from [email protected]