Itential Automation Gateway Demo Overview

Network engineers and automation developers often work in silos – scripts stay local, integrations are manual, and operationalizing custom code requires significant overhead. Meanwhile, AI agents and automation platforms need seamless access to your organization’s custom tools and scripts. Itential Automation Gateway bridges these gaps by providing a unified platform for script deployment, orchestration, and AI integration.

This demo walks through the complete lifecycle of transforming a local Python script into an enterprise-ready automation service. Watch as a simple script that retrieves internet routing table data becomes integrated into workflows, exposed through the platform, and made accessible to AI agents – all in minutes.

What You’ll See:

  • Rapid Script Onboarding: Take a locally developed Python script and add it to the gateway in minutes.
  • Dynamic Service Creation: Configure repositories, decorators, and services that execute in real-time virtual environments.
  • Workflow Integration: Build workflows around your script using Itential’s Workflow Studio.
  • AI Agent Connectivity: Query and execute your services directly through cloud desktop agents via Itential MCP.
  • Live Deployment: Every execution pulls fresh code from your repository – no manual updates required.

Explore Itential Automation Gateway →

  • Demo Notes

    (So you can skip ahead, if you want.)

    00:00 Introduction & Script Overview
    01:53 Repository Setup & Initialization
    03:35 Gateway Repository Creation
    05:12 Service Configuration
    07:36 Local Service Testing
    09:30 Workflow Creation & Automation
    12:55 Orchestration Platform Integration
    14:00 Cloud Desktop MCP Setup
    15:47 AI Agent Service Discovery
    17:26 Wrap Up & Dynamic Deployment

  • View Transcript

    Joksan Flores • 00:00

    Hi everybody. Today I’m going to be walking through Itential Automation Gateway version 5 and more importantly, taking a script that I just created, adding it to the gateway. Showing it in the platform, operationalizing around the workflow, and even querying it with my AI agent or my cloud desktop. So let’s get straight to it. Okay. I have created a script to retrieve routes from the internet routing table using one of the R views routers out there. I am just peering with one of them.

    Joksan Flores • 00:36

    I could have used a service like Ripe for this. I will that’ll be my next progression into it. But initially I just wanted to do something that I was comfortable with. So I put together a quick script that I have right here in my VS Code. It uses Paramico and it logs into a route server from Comcast and it pulls a number of routes. And I already have an execution. This script takes a few seconds to run.

    Joksan Flores • 01:00

    So I already have an execution that I planned, you know, kind of showed before here. I pulled the 1st 50 lines off the output. And that’s just a script that I have. So what we’re gonna do is I have a repo that I have created. My repo is currently empty, and let me pull it up. Let’s pull that up here. So my repo is currently empty.

    Joksan Flores • 01:20

    Let’s put that to the side of the screen right there. Make it a little small. So what we’re gonna do is we’re gonna be doing an init, adding my script to my repo, then we’re gonna add it to the gateway. The way that the automation gateway works is it’ll actually fetch the repo real time upon execution, build a virtual environment, install the requirements as laid out by the requirements that text that I have here. In my case, I just need Paramico greater than 3.0, and then execute it live. So we’re gonna go through all that. Okay, so I have my script.

    Joksan Flores • 01:53

    I have my repo. I have the origin here, so let’s go and actually add it. I’m gonna use VS Code for this. So we’re gonna do initialize repo. We’re gonna go and say, let’s see. I think we can just set the origin right here. Let’s add a remote.

    Joksan Flores • 02:10

    Yep, that’s what we’re gonna do. So let’s add a remote. That’ll be my remote. I already have my RSA set up, so it should be good for this. Remote, a remote URL. We’re gonna call it origin. And that will be set up, and we’re gonna do a commit.

    Joksan Flores • 02:28

    So let’s do initial commit and commit and push. Okay, this will plug. And now we have a repo setup. Awesome. So now the next thing that we want to do is we want to add this to our gateway. So I’m going to be copying my HTTPS URL so that I can clone from my gateway. Notice that my repo was created as a public repo.

    Joksan Flores • 02:58

    So if I go to my settings here, it should be public. This is public. I can do private repos. If I do that, then I will have to create an RSA in my gateway. I want to skip that step for now. I just want to keep it simple. This scenario.

    Joksan Flores • 03:14

    So let me copy the URL in my notes right here. And now I shouldn’t need this anymore. So I’m going to hide my VS Code because my script is already in the repo. The code is already over there. So I’m going to move into my IAG now. So I executed the script locally, built it all on my laptops, right? This is all my laptop locally here.

    Joksan Flores • 03:35

    I develop, and the whole idea behind gateway is that you develop your script locally and then you promote it and use it in your development lab or in your production environment or what have you, right? And that’s the whole idea. You develop on your laptop and then you go into the platform. So let’s go ahead and go into the gateway. Yeah. Let’s go ahead and go into the gateway and do an IGCTL. The 1st thing that I’m gonna do is I am gonna create my repository.

    Joksan Flores • 04:06

    So I’m gonna say create repository. I’m gonna call it internet routes-ash URL and that will be my URL the same I just copied. So that’s the 1st step. We need a couple more things. In order for my script to also, and I should have shown, here we go. In order for my script, my script takes it one argument, super simple. It’s got arc parse set into it, and it takes an argument that says number of routes.

    Joksan Flores • 04:34

    In reality, this is the number of lines that it accepts or the number of round of lines that it’ll print in standard app. For that, I need to have a decorator. The gateway uses the decorator as a way to know what arguments you can pass in to the script, right? And this is actually you can do a lot of stuff with this, right? You can do number of routes, number route, num_routes . Um it has to correspond to the argument flag. I can have a type integer or a type string or any types of JSON schema supports or the script supports as input, and then I can set default values, minimum, maximums, etc.

    Joksan Flores • 05:12

    And the gateway will validate all that upon service execution, which is really cool. Okay, so now that we have that decorator explain, let’s go ahead and create it. And then what we’re gonna do is we’re gonna encase it by single quotes just to do a multi-line. Um copy into my keyboard clipboard. We’re gonna have it encase in single quotes, and that’ll be my decorator. And the last thing that we’re gonna do is we’re gonna create a service. So with the service, what we’re gonna do is this is gonna tie all those pieces together.

    Joksan Flores • 05:52

    It’s gonna tie the script to the repo. It’ll say where is the script located, where in the repo it’s located. In this case, we’re just located in the global folder, right? We committed a super simple repo structure. And then we’re gonna tie it to the decorator as well. So the command’s gonna be Igctl create service python-script internet routes dash/repository internet routes decorator internet routes and file name. It’s gonna be internet.

    Joksan Flores • 06:32

    Routes.py. Now, the one thing that’s important here is I am creating an entirely brand new repository for this. You don’t have to create a new repo. If you have scripts that already work and they had there’s multiple scripts within that repo, this is the reason why you declare the file name right here. So you can create multiple services that point to the same repository and have and this is where you point the file. There’s also a working directory flag. So if you’re re if your script is within a specific folder in a repo, you can also tie it and create it like that.

    Joksan Flores • 07:08

    So there we go. So now we have the script. We have the name of it, repo, file name, and the decorator. So what we’re gonna do is the next thing that we’re gonna do is we’re gonna go ahead and test it. So let’s go ahead and do that locally from the gateway. I’m gonna say IAGCTL run service Python script internet routes. Mind you that I’m calling the service name, not the script name.

    Joksan Flores • 07:36

    I’m calling the service name, Python script internet routes. And then the next thing that I gotta do is I gotta pass that parameter. So I’m gonna use the set flag, and this will allow me to leverage that decorator to pass in values. So set number of routes, and we’re gonna do 50. Let’s do that. I like to see kind of what’s going on down here. Okay, I made a mistake there.

    Joksan Flores • 08:00

    Let’s see what I do. Oh, that’s uh noted my mistake right here. I gotta put an equal. So set numroutes equals 50. That’ll pass in my flag. And now that’s calling the gateway. There’s a client and server relationship with the gateway.

    Joksan Flores • 08:15

    It’s all happening locally on the same server on this setup. Um, but that’s essentially instructing the gateway to go and execute the service. In the background, like the gateway will do is it’ll create a temporary directory, it’ll clone the repo, it’ll install all the requirements according to the requirements that text that I set. Um we can also do pie project. So you can see that I got the execution right here. The script went off and logged into that Comcast route server, and it logged all the routes. Okay, so now that my script has been created and my service has been my script has been added to the gateway and my service has been created.

    Joksan Flores • 09:02

    Essentially, what happens is in the background the gateway will announce that asset into my platform. So what I’m gonna do is I’m gonna go ahead and create a simple workflow to go and execute it. In the meantime, we can actually go ahead and show it. Let’s go ahead and show it really quick. If I go to gateway manager, I go to my gateway and go to my services right here, somewhere around here. I should see my we can do a search. Internet routes right here.

    Joksan Flores • 09:30

    Awesome. So my service is already being added, and this is the decorator that I was talking about, right? The decorator will specify the parameters that that script will accept, and it has a default set to 100, which is great. So let’s go back into my studio and I’m gonna create a workflow. We’re gonna keep it super simple. I’m gonna call it internet routes. Everything is called internet routes today.

    Joksan Flores • 09:53

    Just keep to keep things all simple. And this will give me a way to expose this thing as well, right? So now I can go ahead and create my my workflow. I will use the run service task, and I’m gonna use another couple things because I want to show the output. So what I’m gonna do is I’m gonna do a query and I’m gonna do a view task. So let’s go ahead and tie those together. I’m going to do it like this, and then the query.

    Joksan Flores • 10:23

    So what I’m going to do is I’m going to configure my run service task. So let’s call it run the internet routes script. I’m going to select my gateway. I’m going to search for my script right here, internet routes. And really cool, huh? So essentially when I select my script here, because the platform already took it, right? It kind of sucks it all in from the gateway.

    Joksan Flores • 10:50

    Once I add my service tied to that decorator, the platform already renders the task dynamically according to it. So look at that. Num routes, number of BGP routes to retrieve. Like I said before, this is actually the number of lines, right? The script is pretty dumb. It’ll just say it’ll count a hundred lines off of the output and it’ll stop there, right? It’ll show the command and it’ll get a hundred lines, and that’s it.

    Joksan Flores • 11:12

    Now I’m going to change this to say, let’s say 200 lines. It has a default already. I can do a lot of stuff with this. You can kind of start getting the gears going on the stuff that I can do. And here, what I’m going to do is the gateway will print the output as result. It’ll print it as an object. So I’m going to do result std out, which is what I want to query out of this value.

    Joksan Flores • 11:34

    And I’m going to assign it to the run in the internet route script. I’m going to call this query std out. And then in my task for viewing, I’m just gonna show the body of that query and then I’m gonna say internet routes routing table. And let’s go ahead and save that and run it. That’ll take a 2nd to run, just like the script ran. I’m gonna start my auto work that way, it just pops up, and we’ll wait for that to happen. Awesome.

    Joksan Flores • 12:28

    Here we go. The formatting could be better, right? Because I am just printing standard out from the box, but pretty awesome, right? I got a script, add it to my gateway. Now all of a sudden I created a workflow and I have a quick view of it. So now I can run this thing with any number of parameters, adjustments, and things like that, and run it on my platform. With the attention platform, there’s a lot of capability that you can do to these things, right?

    Joksan Flores • 12:55

    So I can actually create a form, expose it through our operators, operations manager, I can create an API for this. I can do all sorts of things now that I have unboarded this script into my gateway and it’s part of my orchestration stack. I can also take in other parameters or execute the script and pass it in, pass the output into a ticket, right? If I wanted to augment a change request with information about uh route churning or something like that, right? Which is kind of the use case that I’m looking at building. If I wanted to know how often has a route churn or has changed AS paths or has changed origin AS, I can use this kind of service or the right service, and I can do it in a workflow and say attach it to a change request or send the message to Slack or notify a team member, send emails, all the goodness that comes with the orchestration platform. Now I can leverage my script around those things.

    Joksan Flores • 13:53

    Okay, now that we have the script onboarded into the gateway and exposed into the platform, another one of the things that I can do is I can chat with it using my cloud desktop agent via Ittentional MCP. If I go here into my cloud desktop, I have already unboarded my attentional MCP here. So let’s go ahead and look at that. I’m gonna turn it on here. Let’s go manage connectors. If I go to Ittentional MCP and configure to show you all the things that I get out, these are functions that I have configured and tool permissions that I have. So this is a good way of showing what it can do and it’s capable of doing.

    Joksan Flores • 14:34

    The intentional MCP provides over 75 tools at the moment. I have it restricted to only show some of them. But the most important ones for this discussion are get services and run service. When I add a script, I showed it to you, I showed it in the previous demonstration. It gets added to our gateway manager as a service. If I had four gateways running all on boarded with different scripts or all have different scripts on boarded into them, all my scripts will be aggregate into my gateway manager, and I can retrieve them using get service and run service. And then now I can leverage them on my chat.

    Joksan Flores • 15:12

    So what we’re gonna do is we’re gonna do a chat and we’re gonna start a new conversation and say, can you get the ittential services and see which one I can use to retrieve internet routes. Can you get the attention services and see which one I can use to retrieve internet routes? So let’s go and see do that. I help you get attentional services and find one that can retrieve internet routes. Let me fetch the list of services. Okay, awesome. So I found it.

    Joksan Flores • 15:47

    I can see there’s a service called Internet Routes. The service name is Internet Routes. It’s part of the SE Lab IG5 standalone. It’s a Python script. It doesn’t have a description, but that’s fine. And more importantly, it’s got the input parameters exposed. What that means is that now my cloud desktop knows, right?

    Joksan Flores • 16:06

    My agent, and this could be any agent. It could be copilot, it could be chat GPT, it could be a custom agent that uses Llama or uses the apanthropic API, bedrock, etc. Now these have the understanding and know what parameters it needs to pass, right? It’s got a default to 100, minimum, maximum, etc. So let’s go ahead and say can you uh retrieve the top 200 internet routes? Okay, we’ve got run service. It’s got a good set of parameters here.

    Joksan Flores • 16:38

    So this is how according to the decorator and so forth. Let’s see how it goes. Okay, perfect. So it’s got successfully retrieved the 200 internet routes. Here’s a summary of what was returned. Router ID, AS number, next hop, blah blah blah, network prefix. So it took an aggregate of the prefix.

    Joksan Flores • 16:58

    I want to see show me a table of all the prefixes. That was a lot of data. So let’s see if it shows it to me in a table. Okay, perfect. Look at that. So now we have a way of very quickly with a simple script to show the internet routing table. Now this is rather boring because we got a lot of 24s and you know 18s and 17s.

    Joksan Flores • 17:26

    We got a lot of slash 24s. So we will be here for a while if we wanted to list all 1000 1,200,000 routes or whatever the internet routing table right now is. But we can see that at the very least we get some of these here. But more importantly, the idea here is to kind of showcase how very quickly I am able to create a script, add it to my repo, add it to my gateway as a service dynamically from the repo. Add it to a workflow and augment it with any other operations that I need, like that little view data that I did, right? View tasks that I did. I can augment it with tasks from you know ServiceNow, InfoBlock, SolarWinds, Netbox.

    Joksan Flores • 18:11

    Infrahub, etc. Any of those. And then also how quickly my MCP can just pick it up dynamically as well from the attention platform. Keep in mind that since I already create, I am only tying the repo to the gateway. If I make changes on the fly to my script locally from my laptop from my BS Code, just like I did initially to commit it, all the changes will be picked up on the fly. So my repo, I will always be executing based on the repository code, and I don’t have to worry about the maintenance of any of it, right? If I if I promote my my script and I update it with new functionality, or I make it, let’s say that I don’t like uh to see so many slash 24s and I want to aggregate them all into /20s, I can make that logic, I can add that logic to the script.

    Joksan Flores • 19:01

    And now instead of seeing all these 24s, I will see slash 20s immediately, right? It happens on the fly because every time the gateway executes, it’ll clone straight from the repo. And so I have that dynamic script functionality. Thank you for watching.