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.
- Authenticated bytes into one S3 bucket. Full stop.
- Events? Wire up S3 notifications yourself.
- Tenancy, devices and quotas: your problem, in IAM.
- 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.
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
| 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.
-
01
Point the fleet at it
Devices upload over FTP, FTPS or HTTP(S)/presigned, whatever the firmware already speaks. No agents, no rewrites.
-
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. -
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.
{
"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.
Enter a valid email address.
no self-serve yet · we reply from [email protected]
Thanks. We’ll be in touch about access. Prefer email? [email protected]