Skip to content

feat: sessions ui#620

Merged
droot merged 31 commits into
GoogleCloudPlatform:mainfrom
ShubyM:feat/sessions-ui
Dec 11, 2025
Merged

feat: sessions ui#620
droot merged 31 commits into
GoogleCloudPlatform:mainfrom
ShubyM:feat/sessions-ui

Conversation

@ShubyM
Copy link
Copy Markdown
Collaborator

@ShubyM ShubyM commented Dec 9, 2025

High Level: Added support for hosting kubectl-ai on a GKE cluster.

Introduced an Agent Manager and SessionManger which enables us to have an Agent per session in the UI. Each Agent get the same global instance of the store.

New web ui looks like this:
image

Copy link
Copy Markdown
Member

@droot droot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did a first pass. But it is looking in great shape, will take a deeper look later today.

So glad to see this coming together.

Comment thread cmd/main.go Outdated
Comment thread cmd/main.go Outdated

if opt.NewSession || opt.ResumeSession != "" {
sessionManager, err = sessions.NewSessionManager(opt.SessionBackend)
sessionStore, err = sessions.NewSessionManager(opt.SessionBackend)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

about default for opt.SessionBackend, I am guessing if one is running in a hosted mode, default should be backend that is persistent.

Comment thread cmd/main.go
var llmClient gollm.Client
if opt.SkipVerifySSL {
llmClient, err = gollm.NewClient(ctx, opt.ProviderID, gollm.WithSkipVerifySSL())
var recorder journal.Recorder
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am curious about the role of recorder in a multi-user hosted setup. Haven't thought too deeply about it.

Comment thread cmd/main.go Outdated
Comment thread cmd/main.go Outdated
Comment thread docs/gke-deployment.md Outdated
Comment thread docs/gke-deployment.md Outdated
kubectl apply -f k8s/sandbox/all-in-one.yaml
```

The sandbox manifest provisions the `computer` namespace and the `normal-user` service account used for sandbox pods. The Deployment manifest expects the `kubectl-ai` namespace to exist ahead of time.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think figuring out IAM permissions for the sandbox pod for an agentic session will be interesting.

Comment thread docs/gke-deployment.md
Copy `k8s/kubectl-ai-gke.yaml` to a working file and edit the following sections:

1. **Container image** – replace the `REPLACE_WITH_YOUR_IMAGE`
2. **Gemini API key** – change `REPLACE_WITH_YOUR_GEMINI_API_KEY` to the key you obtained from Google AI Studio
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lets add a TODO for using vertexai here and use workload identity to use vertexai for LLM calls.

Copy link
Copy Markdown
Member

@droot droot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for addressing the feedback. Its looking good.

@droot droot merged commit 1e7b9c1 into GoogleCloudPlatform:main Dec 11, 2025
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants