Show HN: Strada – Cloud IDE for Connecting SaaS APIs (getstrada.com)
While working on our first product (a unified accounting API), we learned that as companies grow, their integration teams become more technical but typically still use low-code tools. We also observed that as LLMs are becoming popular, these teams (usually outside of engineering) are adopting more code. For example, we spoke with multiple companies that generate integration code with an LLM and use it in their low-code platform.
Unfortunately, most integration tools are not designed with code as a first-class citizen. They often have limited support for external libraries, restrict how variables are used, and limit how code blocks interact with other workflow steps. But integration developers put up with them because stitching together authentication, scripts, APIs, infrastructure, and observability is time consuming and not a core focus for their teams.
Instead of drag-and-drop blocks, we chose code as the main interface. Tasks that are frustrating in low-code tools become simple with code: conditional logic with layers of branching, complex transformations, or problems that an external library already solves (for example, redacting personally identifiable information with the scrubadub library [1]). Each Strada workflow is a contiguous Python script, and every action configured in the UI can be invoked like a function. We started with Python since it’s popular with teams outside of engineering, like IT, Data, and Ops.
Our goal is to help integration builders focus on logic unique to their business by simplifying everything outside of that: - Integrations: we handle authentication and provide abstractions for common app actions; - Triggers: workflows can be triggered by a webhook or run on a schedule; - Infrastructure: one-click deployment with automatic scaling; - Observability: detailed logging of workflow actions, payloads, and errors.
Today, customers use Strada for workflows like Customer Support (receive Zendesk ticket webhook, remove sensitive information, perform sentiment analysis using OpenAI, and escalate problematic tickets) and Customer Onboarding (receive webhook with new customer data & files, transform to expected format, send request to third-party API, send request to internal endpoint).
What we're currently working on: - More enterprise app integrations; - A self-hosting option; - More runtimes in addition to Python; - AI for code generation.
We’re excited for you to try it and share your feedback!
29 comments
[ 3.4 ms ] story [ 88.5 ms ] threadDo you handle retry on failure and exponential backoff on rate limiting? (I'm hoping the answer to both of these is yes.)
Do I have to worry about rate limiting my calls to your platform, and if so do I have to rate limit them at your rate limit or the 3rd party's rate limit or ? (I'm hoping the answer to this is within reason I don't have to worry about rate limits, you just queue up my calls and forward them at the right rate.)
Is there a way inside the custom Python code to make an arbitrary 3rd party endpoint look idempotent to outside callers? (Hoping for this to be yes.)
2. You do not have to worry about rate limiting calls to our service. We enqueue each request and respond with a HTTP status `201`, and our worker cluster will start processing the job. Within the workflow, 3rd party API calls can be rate limited, but for now we leave that to the discretion of the workflow author (see 1.)
3. I may need a bit of clarification on this one. Is the question whether you can provide idempotency key when making a request to a 3rd party endpoint? If so, yes you can. We have simple abstractions of common actions (for example sending a message in slack, or creating contact). However, you can always build your own custom action that sits on top of the underlying HTTP request, and therefore you can pass any additional parameter (idempotency key) in this case.
Re: your mention elsewhere of adding language support beyond Python, I'll call out C# (first choice) and/or Typescript (2nd choice) as my personal favorite votes.
I think this is the winning feature. The issue with Low-code/No-code, as many engineers acknowledge, is that they tend to be utilized for tasks better suited for coding. Companies are attracted to the notion that designers, PMs, or others can independently create tools and conserve engineering resources. However, these tools often exceed the capabilities of LC/NC, resulting in an unmanageable complexity. In reality, code proves effective for constructing large, intricate systems — or at least has a fighting chance where LC/NC falls short. Anyways, all of this is to say that code as a first-class citizen + source control is a big win here.
One particular conversation that stood out was a developer that had to chain 6 layers of low-code blocks, just to flatten a JSON response. In this case he wished that he could write a simple recursive function to solve the same task.
- Your video opens up in 25% smaller window than the screenshot, which is weird, only way for me to really see whats going on in the video is by making it full screen, on a 27-inch 4k display where now it's just too large.
- I don't know if you're just talking that fast or you sped up the video, but I had to for the first time in my life change the speed of a video to 0.75x just to understand what you were saying.
- We'll take look to address this.
- We actually did slightly speed up the video. We will re-upload the video with the original speed. Thanks for calling this out!
I do have friends/colleagues forward me the occasional DHH tweet from time to time, whenever he mentions Strada :)
1 - https://github.com/turbot/flowpipe 2 - https://hub.flowpipe.io 3 - https://flowpipe.io/docs/flowpipe-hcl/step#retry 4 - https://flowpipe.io/docs/flowpipe-hcl/step/function
disclaimer: I'm founder of ^
At the end of the day we care about our customers and want them to solve their problems with whichever tools best suit their needs. We are on mission to build our version, but this isn’t a zero-sum game.
We are going to record a slower, more in-depth video and host it on our docs.
Asking because I have a client who is using a Sales POS that has an API, and we’re trying to integrate it with another service’s API that does Accounts Payable. Company2 has not implemented all features of Company1’s API and Company2 says, “that feature is not supported”.
Of course, the Company1 product is already configured and running. Company2’s _minimum implementation_ of Company1’s API de facto restricts how Company1’s product can be configured. Who would have imagined that?!
So I’m asking myself, is there even a market for a third-party to connect these two platforms? And how would that work if these two parties are not working together, why would either work with yet another third-party? What’s the landscape here; what do I look for? Are there generic API middlemen? Or do they only provide integration within certain contexts or industries or channels. How is the market divided up?
Correct - our product is for connecting your internal systems.
If I understood the problem correctly, your client can choose not to rely on the "minimum implementation" Company 2 has built to connect to Company 1. Instead if it is possible, your client could use our platform to directly build a better integration between Company 2 and Company 1. Of course, we would need to understand the specifics, but in general our product can be used to build whatever business logic is necessary to connect systems within an organization/company.
Happy to chat more specifics if you reach out to founders at getstrada.com
Where do you see yourselves compared to these services? I think businesses and devs grow ever-more considerate of the non-(F)OSS services they use.
[]not the same, but they have no-code as one of their main selling points