Itential 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 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 Gateway →

  • Demo Notes

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

    0:00 What We’re Building
    0:46 Writing a Python Script to Pull Internet Routes
    1:24 Pushing the Script to a Git Repo
    3:51 Registering the Repo & Service in Itential Gateway
    5:49 How to Define Script Parameters
    7:10 Running the Service Locally to Test Execution
    9:19 Viewing the Service in Gateway Manager
    9:47 Building a Workflow Around the Itential Gateway
    13:58 Querying the Itential Gateway via AI Agent & Itential MCP
    17:22 What Comes Next

  • View Transcript

    Joksan Flores • 00:04

    Hi everybody. Today I’m going to be walking through Itential 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 on 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 RVUs routers out there. I am just peering with one of them. I could have used a service like RIPE for this. That’ll be my next progression into it.

    Joksan Flores • 00:46

    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 Parameco 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. So I already have an execution that I planned, you know, kind of showed before here.

    Joksan Flores • 01:08

    I pulled the 1st 50 lines off the output. And this is a script that I have. So, what we’re going to 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:24

    Let’s put that to the side of the screen right there. Make it a little small. So, what we’re going to do is we’re going to be doing an init, adding my script to my repo. Then, we’re going to 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 Parameco greater than 3.0, and then execute it live. So, we’re going to go through all that.

    Joksan Flores • 01:55

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

    Joksan Flores • 02:16

    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. Add remote, a remote URL. We’re going to call it origin. And that will be set up, and we’re going to do a commit. So let’s do initial commit and commit and push.

    Joksan Flores • 02:39

    Okay, swap load. And now we have our repo set up. 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. So if I go to my settings here, it should be public.

    Joksan Flores • 03:08

    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. So let me copy the URL in my notes right here.

    Joksan Flores • 03:23

    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 my laptops, right? This is all my laptop. Locally, here 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?

    Joksan Flores • 03:51

    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. Let’s go ahead and go into the gateway and do an IGCTL. The 1st thing that I’m going to do is I am going to create my repository. So, I’m going to say create repository. I’m going to call it internet routes.

    Joksan Flores • 04:15

    dash-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 arg parse set into it and it takes an argument that says number of routes and reality this is the number of lines that it accepts or the number 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 . 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 where the script supports as input. And then I can set default values, minimum, maximum, et cetera.

    Joksan Flores • 05:13

    And the gateway will validate all that upon service execution, which is really cool. Okay, so now that we have that decorator explained, let’s go ahead and create it. GCTL create decorator internet routes-as schema. And then what we’re going to do is we’re going to encase it by single quotes just to do a multi-line. Let’s go back and copy into my clipboard. We’re going to have it encase in single quotes, and that’ll be my decorator. And the last thing that we’re going to do is we’re going to create a service.

    Joksan Flores • 05:49

    So, with the service, what we’re going to do is this is going to tie all those pieces together. It’s going to 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 going to tie it to the decorator as well. So, the command is going to be IGCTL create service Python-script internet routes dash/repository internet routes decorator internet routes and file name. It’s going to be internet.

    Joksan Flores • 06:34

    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 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 your script is within a specific folder in a repo, you can also tie it and create it like that.

    Joksan Flores • 07:10

    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 going to do is the next thing that we’re going to do is we’re going to go ahead and test it. So let’s go ahead and do that locally from the gateway. I’m going to say IAGCTL run service Python script internet routes. Mind you that I’m calling the service name, not the script name.

    Joksan Flores • 07:38

    I’m calling the service name, Python script internet routes. And then the next thing that I got to do is I got to pass that parameter. So I’m going to 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 going to do 50. Let’s do that. That’s what I did on my testing. And then let’s do verbose.

    Joksan Flores • 07:58

    I like to see kind of what’s going on down here. Okay, I made a mistake there. Let’s see what I do. Oh, that’s noted my mistake right here. I got to put an equal. So set numRoutes equals 50. That’ll pass in my flag.

    Joksan Flores • 08:10

    And now that’s calling the gateway. There’s a client and server relationship with the gateway. It’s all happening locally on the same server on this setup. But that’s essentially instructing the gateway to go and execute the service. In the background, what 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.

    Joksan Flores • 08:36

    We can also do pyproject.tomo, and then it’ll execute the script. 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, essentially what happens is in the background, the gateway will announce that asset into my platform. So, what I’m going to do is I’m going to 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.

    Joksan Flores • 09:19

    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. 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 going to create a workflow.

    Joksan Flores • 09:47

    We’re going to keep it super simple. I’m going to call it internet routes. Everything is called internet routes today, just 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 workflow. I will use the run service task. And I’m going to use another couple things because I want to show the output.

    Joksan Flores • 10:12

    So what I’m going to do is I’m going to do a query and I’m going to 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. So what I’m going to do is I’m going to configure my run service task. So let’s call it going to run the internet routes script. I’m going to select my gateway.

    Joksan Flores • 10:38

    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. Once I add my service tied to that decorator, the platform already renders the task dynamically according to it. So look at that. NumRoutes, number of BGP routes to retrieve. Like I said before, this is actually the number of lines, right?

    Joksan Flores • 11:05

    The script is pretty dumb. It’ll just say it’ll count 100 lines off of the output and it’ll stop there, right? It’ll show the command and it’ll get 100 lines and that’s it. 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.

    Joksan Flores • 11:24

    In 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 stdout, which is what I want to query out of this value. And I’m going to assign it to the run in the internet routes script. I’m going to call this query stdout. And then in my task for viewing, I’m just going to show the body of that query and then I’m going to say internet routes routing table. And let’s go ahead and save that and run it.

    Joksan Flores • 12:03

    That’ll take a 2nd to run, just like the script ran. I’m going to start my auto work that way, it just pops up. And we’ll wait for that to happen. Awesome. Here we go. The formatting could be better, right? Because I am just printing standard app from the box, but pretty awesome, right?

    Joksan Flores • 12:36

    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? So I can actually create a form, expose it through our operations manager. I can create an API for this. I can do all sorts of things now that I have onboarded this script into my gateway and it’s part of my orchestration stack.

    Joksan Flores • 13:12

    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 route churning or something like that, 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 ASs, 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. 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 ital MCP. If I go here into my cloud desktop, I have already onboarded my attention MCP here. So let’s go ahead and look at that.

    Joksan Flores • 14:16

    I’m going to turn it on here. Let’s go manage connectors. If I go to Attentional 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. The Attentional 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.

    Joksan Flores • 14:47

    When I add a script, I showed it in the previous demonstration. It gets added to our gateway manager as a service. If I had four gateways running all onboarded with different scripts or all have different scripts onboarded 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. So what we’re going to do is we’re going to do a chat and we’re going to start a new conversation and say, can you get the attention 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.

    Joksan Flores • 15:41

    I hope you get attention services and find one that can retrieve internet routes. Let me fetch the list of services. Okay, awesome. So I found it. I can see there’s a service called Internet Routes. The service name is Internet Routes. It’s part of the SE Lab IAG5 standalone.

    Joksan Flores • 15:55

    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, my agent, and this could be any agent. It could be Copilot, it could be ChatGPT, it could be a custom agent that uses Lama or uses the Anthropic 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.

    Joksan Flores • 16:25

    So let’s go ahead and say, can you retrieve the top 200 internet routes? Okay, we’ve got run service. It’s got a good set of parameters here. So, this is how, as 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, NexHop, blah, blah, blah, network prefix.

    Joksan Flores • 16:58

    So, it took an aggregate of the prefix. I want to see, show me a table of all the prefixes. And 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.

    Joksan Flores • 17:22

    Now, this is rather boring because we got a lot of 24s and 18s and 17s. We got a lot of slash 24s. So we will be here for a while if we wanted to list all 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 ServiceNow, Infoblock, SolarWinds, Netbox.

    Joksan Flores • 18:11

    Infra Hub, et cetera, any of those. And then also how quickly my MCP can just pick it up dynamically as well from the Attentional 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 promote my script and I update it with new functionality, or I make it, let’s say that I don’t like to see so many slash 24s and I want to aggregate them all into slash 20s, I can make that logic, I can add that logic to the script. And now instead of seeing all these 24s, I will see /20s immediately, right?

    Joksan Flores • 19:05

    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.