We started Seam out of our frustration with the challenges of integrating IoT devices with software apps.
For example, my co-founder Dawn led Sonder's efforts to integrate smartlocks with their reservation systems in order to automate access for guests. She struggled with poorly documented and unreliable device APIs along the way. Our founding engineer Max authored the popular TuyAPI library and has spent countless hours trying to build sensible interfaces on top of unreliable devices.
For my part, I was an early engineer at Nest and saw firsthand how manufacturers often lack the resources and motivation to support third-party developers.
As a result, most devices lack public APIs, and getting access to the private ones (if they exist) requires lengthy negotiations with manufacturers. This task grows in complexity with each additional device brand a developer may need to integrate.
Seam serves as a single API that works across dozens of brands and hundreds of devices.
We start by testing each device in our hardware lab in San Francisco. We study their behaviors & quirks, and faithfully reproduce those in our development sandbox. We take time to craft custom client libraries that maximize developer ergonomics while accounting for the asynchronous nature of the devices. We offer pre-built UI components (React, Web-native…etc) to let developers rapidly assemble complex UIs that can manage large fleets of devices. And we even have a small hardware gateway to connect on-prem and legacy devices.
A few app developers like Guesty (YC S14) already use Seam to connect to their end users’ devices. We have a generous free tier and charge a small fee for additional devices. We work closely with manufacturers to improve device reliability, add OAuth support, and patch security holes. We also spend time educating them on the importance of supporting open source projects like Home Assistant, OpenHab...etc and we will be contributing some of our own integrations to those ecosystems.
Seam is still very much a work in progress with many aspects that need to be improved. But our hope is that it will help push IoT devices from being (mostly) point solutions, to becoming a set of API endpoints software engineers can tap to interact with the physical world.
You don’t need my advice but I noticed you said:
> Our hope is to make device integration simple…
I think you should use more assertive language! You know it can be done so you don’t need to hope — it’s what you’re going to do!
Do or do not, there is no try!
I love this idea in any case. I would echo others in asking why this won’t be more open, though.
This reminds me a bit of Viam (https://www.viam.com/). Different, but exciting to see APIs geared towards making IoT and robotics more accessible and efficient to interface with.
On making Seam more open, it's definitely not off the table. We'll have to balance this with device manufacturers' general preference to have "somebody they can call" if/when their servers get pounded. Admittedly, we've also been focused on making sure Seam becomes a sustainable business. Spending time open sourcing our stuff, making it runable elsewhere...etc takes time away from making sure we get to "default alive" quickly.
Additionally, as a new company, it’s hard to convince someone that you will be around for the 5 years of a contract term when you’re not even 5 years old yet. Having a lot of your stuff open source gives them the off-ramp they would need to feel comfortable signing a deal with a younger company.
This works as long as the value you bring is with the team and a breadth of knowledge and experience behind it along with the incentives to continue to improve upon the product. Considering the amount of IoT devices there are and how much of it lacks interoperability, I’d say there’s plenty of value to be sold yet.
> I appreciate the advice
I'm glad it wasn't annoying!
Can you elaborate on this? And, more importantly, why isn't seam itself open?
On Seam being open source, we've debated this back and forth internally, especially given most of us came from various OSS projects. Tbh, there's already a ton of options for open sourced integrations. When/where we see one that's lacking, we may contribute ours back...etc. fwiw I don't think it's a done deal that we won't fully open source more of our infra down the line. We'll see.
I'd say primarily because making money with an open product is very very difficult, regardless of the industry you build for.
It sounds like it would be difficult to "open core" the product too.
Now for certain products, such as databases, not being open is borderline a non-starter. But for many other infra categories, the customer doesn't purchase your product based on whether it is open source or not. For example, no one cares that Stripe, Twilio, or Plaid aren't fully open source. Customers just want the API to work.
Personally, I'd like to see Seam go more open as we get more resources/bandwidth. We've already published a few things (https://github.com/seamapi) and I'd like to do more over time such as publishing firmware, open connectors, backends you can run anywhere...etc.
Well - Home assistant makes money in a transparent way and lots of people pay for cloud access without even using/needing it just to support the devs.
Actually, I'm kinda confused on the whole proposition. Why can't I use existing libraries? Why the middleman?
With respect to the value prop, most of our API customers are software apps that need to connect to their users' devices. They can't, or don't want, to handle build auth flows, deal with device disconnection, unreliable cloud APIs, doing BD with device manufacturer...etc. Tbh, it's pretty much the same reason that made Plaid popular with the fintech ecosystem.
In my current role, I have met with several large tech companies over the past few months - and this seems to be exactly what they want - an easy way to integrate lots of third party devices into their own app(s). I guess Stringify was just a bit too early (2014-2017).
The consumer IoT space has been getting worse in the past 5 years. Companies used to provide open APIs. Then, just an IFTTT integration instead. Then, just an Alexa/GH integration instead.
Neat product and I wish you the best of luck!
I work at Siemens and we need to integrate lots of brownfield devices. We use the W3C Web of Things standard for representing devices: https://www.w3.org/TR/wot-thing-description11/
Would love to hear your thoughts on this.
An example from Deutsche Telekom: https://github.com/w3c/wot-cg/blob/main/Presentations/2022/2...
I think the author of OpenHAB is on that team.
At the start of Seam, we spent a lot of time reading those specs and absorbing some of the key ideas expressing in its core documents. As a result, you'll see a lot of W3C WoT terminology throughout our API and its docs ("capabilities", "events, properties, actions", "affordances"...etc). My mom (of all people!) is the one who pushed us to really spend time in those docs and understand where the designs were coming from.
I think ultimately we began diverging a bit from those specs when it came time to solve customer needs, such as device-category standardization, async handling of access codes...etc. But I have fond memories of going over those docs with my mom, highlighting certain passages of their docs on paper printouts, and debating the merits of different approaches.
Also feel free to ping me sy@seam.co if you guys need help with various integrations.
Also I’ll check out your product in more depth.
BTW, what’s your mom‘s background? Sounds like awesome parenting
I have built a small business to solve a similar problem for Property Managers: to manage all their phone-based intercoms (Doorking, LiftMaster, etc.) in one easy-to-use (and patented) SAAS UI. I did work with a similar integrators like RemoteLock.com (but love your approach a lot more).
Would love to work with you, check it out at www.DropBy.io and feel free to reach out to me at camille@dropby.io
Again, great great idea!
Any plans for integrating ubiquiti cameras and access systems?
Colin, EE on our team, is building a test fixture for it in order to correctly simulate certain scenarios on it. I think we'll have the access system integrated in the next 4-5 weeks. The camera stuff, we're still toying with the exact API & use cases. If you have specific camera features you want supported, could you post them here or email me (sy@seam.co)?
For cameras, my initial ideas are relatively simple:
- If someone uses an access key card and is allowed entry through Unifi Access, record a clip on nearby cameras and unlock the door using connected lock.
- Once the person is verified inside by camera, auto-lock the door.
- Unlock door using HKSV (or similar platforms) facial recognition.
- Using an image recognition system to track an animal across multiple cameras and build an automatic reel of movement through an area (for wildlife cameras)
We're in the SF Mission. You're more than welcome to swing by for lunch/coffee to check it out.
ps: PrintNanny looks awesome!
Also, thank you! What kind of 3D printer are you running? If you ever want to try the PrintNanny Raspberry Pi 4 kit, I'll take you up on that coffee and help with the install. =)
So I’d say there are two approaches to doing these abstractions. We sort of support both and let the API client decide which way they want to roll.
The first approach consists of stripping away all the “stuff” that stands in the way of controlling a device. We basically just boil everything down to atomic operations on a single device. For example on SaltoKS locks, we let you create access codes directly on a door devices without having to worry about creating users, access groups, schedules…etc. Of course, we have to create these behind the scenes, but we don’t expose them to the API client. Instead we give you simple methods such seam.access_code.create(device_id…etc) that you can use against either an August device or one that’s part of a larger system such as SaltoKS.
The second approach consists of reintroducing the concept of users, access groups, and assigned credentials…etc and to lift the abstraction to entire systems vs just individual devices/nodes. You frankly need to do this if the site owner wants to continue to use their system in a sensible manner (e.g. see list of employees who badged in) or if you want to support more complex forms of credentials (e.g. Google/Apple Wallet).
I think the important thing to recognize is that, at the end of the day, whether you choose abstraction 1 or abstraction 2, these devices/systems all more or less do the same thing. The manufacturer may use slightly different terminology but you can create abstractions from that.
ps: btw for a long-time we made the mistake of spending too much time trying to nail the abstraction on every dimension imaginable. This included features of certain systems that no developers were asking us about. Now we just focus on solving what devs are asking for. That reduces the surface area of how much "stuff" we have to deal with when creating these API interfaces. This is a textbook example of going back to the YC basics of "talk to users" and "build something people want".
How long do you think you'll have to write the integration code, versus having people look to integrate with your platform proactively?
Would love to get to a place where I could "terraform apply" my IoT devices configuration. Any plans to build this? It's only a small jump from a well-documented API in an OpenAPI spec to a terraform provider.
Ultimately you can definitely use Seam as a hobbyist. A few people do. I have it running in my house alongside Home Assistant. But we're not ever planning on monetizing that segment.
The terraform is pretty interesting. If you could drop me a note sy@seam.co with an example configuration, I'd like to discuss it internally.
Amazon/Azure's IoT solutions are intended for device manufacturers who need to move data back-and-forth between devices and cloud infra. We don't play at all in this space, but a friend of ours, Jonathan Berry, has a company doing exactly that (https://golioth.io/). Many hardware manufacturers need help/tools to connect their devices and some very interesting companies will be built in that part of the stack.
Tuya is trickier to explain. It's... a lot of different things, really. It can be just a firmware + cloud if that's what you want (see countless devices on Alibaba with Tuya built-in). It can also be an entire white-labeled device that you can brand to whatever you'd like. They'll even give you a mobile app to go with it.
Seam is much higher up the stack for now. We mostly focus on device cloud integrations and occasionally a few on-prem systems.
Wish you all the best in your endeavour!
Matter is a device-to-device protocol within a local Thread network. It's solid for getting one device to tell another device on the same Thread network to perform an action, retrieve data...etc. Since Matter is pretty consumer-centric, those devices are generally all contained within a home.
To remotely control those devices (i.e. what our API customers want to do), you sort of need a Thread border router to serve as an internet gateway. You can think of Google Home or Amazon Alexa as one of those. So in theory, you could get a reasonably standardized API to speak to devices via those smart home platforms, but you'll still have to deal with the fragmentation of various smart home platforms.
More problematic, you're still constrained by whatever APIs Google Home / Alexa...etc decide to make available and whatever device operations the Matter protocol also exposes. You could bypass the first problem by installing your own Matter-compatible device hub, but the goal of many of our API customers is to NOT have to deploy any new hardware.
Lastly, a lot of Seam customers need to integrate devices that are not covered by the Matter standard and probably never will (e.g. Access Control Systems).
context: I sat next to Grant Erickson and the Nest team that initially worked on Weave, which eventually became Thread. I still have close friends working on Matter implementation at Google/Amazon/Apple.
OK, I'm off to kickstart (re)Ravel.
Seam solves that problem. Utilizing Seam's existing partnerships and common APIs, I can add support for 20+ new devices within just a few days (vs months). My current customers include BnB hosts, and residential users seeking remote monitoring/control. We're making the push into the PMS market in Q4, which became achievable due to our new Seam partnership.
If anyone is interested in a demo of our current seam-powered integrations please reach out bwebb@homealerts.app
And if you have a contact at Tuya, can you possibly please tell them that encrypting only I-frames in H.264 stream is a really bad idea? P-frames may not have all the pixels needed to get a clear picture, but they leak a lot - and Tuya is saving that stuff to the cloud, unprotected.
And good luck with the company! Must be extremely daunting task to get with all those IoT shenanigans. It's a very noble goal to bring some sanity into that crazy world.
From a technical perspective, their approach however was interesting. They provided a separate adapter for each device they integrated and all of these adapters communicated with "Eclipse Ditto" via Amqp1.0 Protocol (other protocol like Mqtt or Apache Kafka would also be an option).
Eclipse Ditto, an open source digital twin Middleware, then provided an harmonized API for all integrated devices. The mobile App would connect via WebSocket to Ditto and interact with devices of various vendors.
Technically, this worked well. Maybe something to learn from.