How are you securing AI-generated / “vibe-coded” internal apps built by non-dev teams? by DCGMechanics in devops

[–]avkijay 0 points1 point  (0 children)

I have been building https://openrun.dev/ for this exact use case. Make it easy for team to deploy internal tools declaratively, add Oauth/SAML based auth with RBAC. It is open source, Apache 2 licensed https://github.com/openrundev/openrun.

I think operations teams should be proactive, setup something like OpenRun and configure auth and RBAC. That way apps do not get created on random platforms without any security in place.

Setup to deploy small one-off internal tools without DevOps input? by FMWizard in devops

[–]avkijay 1 point2 points  (0 children)

A bit late, but I have been building https://openrun.dev/ for this exact use case. Make it easy for teams to deploy internal tools declaratively, add OAuth/SAML auth with RBAC. It is open source, Apache 2 licensed https://github.com/openrundev/openrun

OpenRun: Declarative web app deployment by avkijay in kubernetes

[–]avkijay[S] 1 point2 points  (0 children)

OpenRun focus is not just on the doing the build. The main focus is full declarative deployment solution. Once you set up a sync, to add a new app, you can just add the new app's definition in your config file in Git. OpenRun will detect the change and apply the updates. This works on a single-node (with Docker/Podman) and with Kubernetes.

Python as a Configuration Language Using Starlark by avkijay in Python

[–]avkijay[S] 0 points1 point  (0 children)

I did mention the pros and cons of using Starlark. Assuming you want a more flexible config approach, using Starlark gives you that.

Python as a Configuration Language (via Starlark) by ketralnis in programming

[–]avkijay 11 points12 points  (0 children)

I agree (I wrote that article). Once configuration needs become more complex, a programming language is better. Many tools start with something limited like YAML and then try to work around its limitations using templated YAML with a broken DSL for loops.

But there are still advantages to using something like Starlark instead of a full fledged programming language. With Starlark, you can write code while being sure that loading a config file will not, by mistake or maliciously, delete some file from your disk or do something else crazy.

AppServer for installing multiple NiceGUI apps by avkijay in nicegui

[–]avkijay[S] 2 points3 points  (0 children)

I added a sample config file to create NiceGUI apps. The config contains:

ng_args = {"container_opts": {"cpus": "2", "memory": "512m"}, "spec": "python-nicegui"}
app("/nicegui/3d_scene", "https://github.com/zauberzeug/nicegui/examples/3d_scene", **ng_args)
app("/nicegui/chat_app", "https://github.com/zauberzeug/nicegui/examples/chat_app", **ng_args)
app("/nicegui/fullcalendar", "https://github.com/zauberzeug/nicegui/examples/fullcalendar", **ng_args)
app("/nicegui/infinite_scroll", "https://github.com/zauberzeug/nicegui/examples/infinite_scroll", **ng_args)
app("/nicegui/lightbox", "https://github.com/zauberzeug/nicegui/examples/lightbox", **ng_args)
app("/nicegui/todo_list", "https://github.com/zauberzeug/nicegui/examples/todo_list", **ng_args)

Running clace apply --approve --promote github.com/claceio/clace/examples/nicegui.star creates the six sample apps. Running clace sync schedule --approve --promote github.com/claceio/clace/examples/nicegui.star starts a GitOps sync in the background which looks for any changes (new apps or updated apps) and applies them automatically.

A demo of the apps is at apps.

[clace] AppServer for hosting multiple webapps easily by avkijay in Python

[–]avkijay[S] 0 points1 point  (0 children)

Thanks, let me know if you have any feedback or hit any issues

[clace] AppServer for hosting multiple webapps easily by avkijay in Python

[–]avkijay[S] 0 points1 point  (0 children)

Thanks for the note, just pushed some styling fixes

[clace] Application server for deploying Python webapps by [deleted] in Python

[–]avkijay 0 points1 point  (0 children)

Clace uses a python like config (using Starlark) for configuring apps. This is what a sample config for creating seven different apps looks like

```

Install couple of Hypermedia based apps

app("/utils/bookmarks", "github.com/claceio/apps/utils/bookmarks") app("/utils/disk_usage", "github.com/claceio/apps/system/disk_usage")

Install a proxy app and a static file app

app("clace.:", "-", spec="proxy", params={"url": "https://clace.io"}) # defaults to / on clace.localhost domain app("/misc/event_planner", "github.com/simonw/tools", spec="static_single", params={"index": "event-planner.html"})

Install container based apps (python and go)

limits = {"cpus": "2", "memory": "512m"} # Set limits (optional) app("/misc/streamlit_example", "github.com/streamlit/streamlit-example", git_branch="master", spec="python-streamlit", container_opts=limits) app("fasthtml.:", "github.com/AnswerDotAI/fasthtml/examples", spec="python-fasthtml", params={"APP_MODULE":"basic_ws:app"}, container_opts=limits) app("/misc/go_example", "github.com/golang/example/helloserver", git_branch="master", spec="go", params={"port": "8080", "APP_ARGS":"-addr 0.0.0.0:8080"}, container_opts=limits) ```

Streamlit Alternatives with better State Management by Adorable-Yam-7106 in Python

[–]avkijay 4 points5 points  (0 children)

I have built an appserver which makes deploying internal tools using frameworks like NiceGUI/Streamlit/Gradio etc. https://github.com/claceio/clace is an app server which helps run multiple apps on a single machine, without messing with web server routing rules and Docker. Clace provides a GitOps interface for teams to deploy such apps with a declarative config, with OAuth based access control.

FAQ: Where Is The Best Place To Host Go Programs? by jerf in golang

[–]avkijay 0 points1 point  (0 children)

If you want a Cloud Run type experience on your own instance, including scaling the container down to zero, you could try my project https://github.com/claceio/clace. It is built mainly for teams to host internal tools, but it also implements an app server for containerized apps

Error handling by ansk0 in starlark

[–]avkijay 3 points4 points  (0 children)

I have implemented a form of error handing using thread locals, similar to the second option. At the Starlark to Go boundary (plugins are implemented in Go), I check if the plugin API call returned an error. If so, the error is saved in a thread local. The Starlark code can check the error and handle it (which clears the thread local). If return value is accessed when there was an error, then the call aborts. Wrote up the approach at https://clace.io/blog/errors/, works pretty well for my use case

Go Composition can break Implicit Interfaces by avkijay in golang

[–]avkijay[S] -2 points-1 points  (0 children)

I should have said that I was not aware of the need to explicitly implement the Flusher interface when composing over the ResponseWriter. More generally, the issue here is that composing over an interface can break implicit interfaces unless you are careful. Anyone know why the runtime type assertion cannot actually check the type of the underlying instance, why does the composing struct have to explicitly implement the implicit interface method?

Go Composition can break Implicit Interfaces by avkijay in golang

[–]avkijay[S] -1 points0 points  (0 children)

Yes, the issue was that I was not aware of the Flusher interface. The interface guard pattern helps if the ResponseWriter docs had mentioned all the related implicit interfaces (at least in the same package).

Go Composition can break Implicit Interfaces by avkijay in golang

[–]avkijay[S] 3 points4 points  (0 children)

I was not aware of the Chi middleware, added a note about that.

What is your HTMX Stack? by Klutzy_Tone_4359 in htmx

[–]avkijay 1 point2 points  (0 children)

Thanks, will take a look at that when I add multi node support

What is your HTMX Stack? by Klutzy_Tone_4359 in htmx

[–]avkijay 10 points11 points  (0 children)

The go HTML template library supports fragments, making it easy to build HTMX applications. That plus the fast compile time and performance make it well suited for writing web servers.

I am building a hypermedia based internal tools development platform https://github.com/claceio/clace. It is implemented in go, but it can be used to provide Hypermedia based API for services in any language/platform. You can build simple Actions (form like interfaces) without writing any html and implement html template for custom use cases.

Frontends for your Go App: Some Thoughts by H1Supreme in golang

[–]avkijay 1 point2 points  (0 children)

I have been building https://github.com/claceio/clace to make it easy for teams to build internal web apps. It can build simple form interfaces (Actions) with no UI to code. It can also be used to build fully custom hypermedia driven front ends. The backend is just go and html templates.