Cursor and Claude AI

Published: Feb 25, 2025 by Isaac Johnson

Cursor is both an AI Code Editor similar (but not identical) to Visual Studio Code as well as a platform to host cutting edge models. Today I’ll show how to create an account and use Cursor to build a full featured app. We’ll even get it through to the end and open-source it.

Since the models I primarily used through Cursor were Anthropic’s, specifically Claude 3.5 Sonnet, I then look at using Anthropic directly as well as using it through Claude.ai

Cursor Install and Setup

We can download the Cursor AI editor from their site

/content/images/2025/02/cursorai-01.png

I can run the install

/content/images/2025/02/cursorai-02.png

On launch, we can see the editor and set its bindings

/content/images/2025/02/cursorai-03.png

Now I should login or create an account

/content/images/2025/02/cursorai-04.png

I can use Google

/content/images/2025/02/cursorai-05.png

Then login to the Desktop app

/content/images/2025/02/cursorai-06.png

I can see I’m set for a “Pro Trial”.

/content/images/2025/02/cursorai-07.png

Usage

I gave it a try on a harder prompt

create a flask app that will list all the current services and ingress in all namespaces in the kubernetes cluster.. create the dockerfile and deployment. it should use a service account with a cluster roll binding that gives access to list all services and ingresses.

I can create the files from the Chat output. Here you can see it prompt me to create a new file

/content/images/2025/02/cursorai-08.png

I can go through all it’s feedback adding files

It would like me to use minikube to push the image so I’ll translate that to Dockerhub or my Harbor CR

/content/images/2025/02/cursorai-09.png

I can do a local docker build by launching a terminal

/content/images/2025/02/cursorai-10.png

I can then tag and push

PS C:\Users\isaac\Workspaces\testproj> docker tag k8sresourceviewer:latest idjohnson/k8sresourceviewer:latest
PS C:\Users\isaac\Workspaces\testproj> docker push idjohnson/k8sresourceviewer:latest
The push refers to repository [docker.io/idjohnson/k8sresourceviewer]
9ccced9e5bb9: Pushed
6b89e0d39c58: Pushed
2fc5d7963423: Pushed
dfe2ab0a9c1e: Pushed
6022e9b5727d: Mounted from library/python
e0dfbff797f9: Mounted from library/python
0eaf13317391: Mounted from library/python
7914c8f600f5: Mounted from library/python
latest: digest: sha256:c38d0dea689c2a97a072a9abe955d1db31561ef0fe37aac8ce9a96ed2fd29ce2 size: 1992
PS C:\Users\isaac\Workspaces\testproj> 

I updated the image line in the deployment YAML

      containers:
      - name: k8s-resource-viewer
        image: idjohnson/k8sresourceviewer:latest

Then popped over to WSL to try and apply (as I dont have a good kubeconfig in windows)

$ kubectl apply -f /mnt/c/Users/isaac/Workspaces/testproj/k8s/deployment.yaml
serviceaccount/resource-viewer created
clusterrole.rbac.authorization.k8s.io/resource-viewer-role created
clusterrolebinding.rbac.authorization.k8s.io/resource-viewer-binding created
deployment.apps/k8s-resource-viewer created
service/k8s-resource-viewer created
ingress.networking.k8s.io/k8s-resource-viewer created

Let’s give it a test:

$ kubectl port-forward svc/k8s-resource-viewer 8088:80
Forwarding from 127.0.0.1:8088 -> 5000
Forwarding from [::1]:8088 -> 5000

This is awesome! I did nothing other than to change the image location to Dockerhub. I literally used the code exactly as given and we can see a working MVP of an app

/content/images/2025/02/cursorai-11.png

I asked it to make sortable columns and I can then apply the diffs

/content/images/2025/02/cursorai-12.png

I can now build and push

PS C:\Users\isaac\Workspaces\testproj> docker build -t idjohnson/k8sresourceviewer:0.1 .   
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/

Sending build context to Docker daemon  59.39kB
Step 1/7 : FROM python:3.9-slim
 ---> 096343841dd9
Step 2/7 : WORKDIR /app
 ---> Using cache
 ---> c842eab193c8
Step 3/7 : COPY requirements.txt .
 ---> Using cache
 ---> 9800cd3e9609
Step 4/7 : RUN pip install --no-cache-dir -r requirements.txt
 ---> Using cache
 ---> e48f2bf6a473
Step 5/7 : COPY . .
 ---> 4d8e4775de30
Step 6/7 : EXPOSE 5000
 ---> Running in d9f107ba5274
 ---> Removed intermediate container d9f107ba5274
 ---> 9412a013e2bc
Step 7/7 : CMD ["python", "app.py"]
 ---> Running in 2dee024802fb
 ---> Removed intermediate container 2dee024802fb
 ---> bc122549bab3
Successfully built bc122549bab3
Successfully tagged idjohnson/k8sresourceviewer:0.1
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

What's Next?
  View a summary of image vulnerabilities and recommendations → docker scout quickview
PS C:\Users\isaac\Workspaces\testproj> docker push idjohnson/k8sresourceviewer:0.1      
The push refers to repository [docker.io/idjohnson/k8sresourceviewer]
561cb7cb7ba3: Pushed
6b89e0d39c58: Layer already exists
2fc5d7963423: Layer already exists
dfe2ab0a9c1e: Layer already exists
6022e9b5727d: Layer already exists
e0dfbff797f9: Layer already exists
0eaf13317391: Layer already exists
7914c8f600f5: Layer already exists
0.1: digest: sha256:8bca67a33467b329d623780be26b26bb6aae5f95ca25280677dfa96c55982bad size: 1992
PS C:\Users\isaac\Workspaces\testproj> 

I can now update the deployment yaml with the new tag (0.1) and then forward the service again to test

builder@LuiGi:~/Workspaces/jekyll-blog$ kubectl apply -f /mnt/c/Users/isaac/Workspaces/testproj/k8s/deployment.yaml
serviceaccount/resource-viewer unchanged
clusterrole.rbac.authorization.k8s.io/resource-viewer-role unchanged
clusterrolebinding.rbac.authorization.k8s.io/resource-viewer-binding unchanged
deployment.apps/k8s-resource-viewer configured
service/k8s-resource-viewer unchanged
ingress.networking.k8s.io/k8s-resource-viewer unchanged
builder@LuiGi:~/Workspaces/jekyll-blog$ kubectl get po -l app=k8s-resource-viewer
NAME                                   READY   STATUS        RESTARTS   AGE
k8s-resource-viewer-667f77cb56-n7ft2   1/1     Running       0          16s
k8s-resource-viewer-7496f79fb8-tc4lw   1/1     Terminating   0          12m
builder@LuiGi:~/Workspaces/jekyll-blog$ kubectl port-forward svc/k8s-resource-viewer 8088:80
Forwarding from 127.0.0.1:8088 -> 5000
Forwarding from [::1]:8088 -> 5000

Again, it nailed it on the first try. Seriously, I’m impressed

I’m going to push even harder asking for some more columns then

Can you update the style to be a modern looking dark theme with colors that include teal, orange and black? I would also like a generated logo on the app that features a ships helm. let’s also create a favicon as well.

It suggests it built the whole thing in the HTML file. No external images.

/content/images/2025/02/cursorai-13.png

Let’s build a 0.2 and see how it works

Then rotate again

builder@LuiGi:~/Workspaces/jekyll-blog$ kubectl apply -f /mnt/c/Users/isaac/Workspaces/testproj/k8s/deployment.yaml
serviceaccount/resource-viewer unchanged
clusterrole.rbac.authorization.k8s.io/resource-viewer-role unchanged
clusterrolebinding.rbac.authorization.k8s.io/resource-viewer-binding unchanged
deployment.apps/k8s-resource-viewer configured
service/k8s-resource-viewer unchanged
ingress.networking.k8s.io/k8s-resource-viewer unchanged
builder@LuiGi:~/Workspaces/jekyll-blog$ kubectl get po -l app=k8s-resource-viewer
NAME                                   READY   STATUS        RESTARTS   AGE
k8s-resource-viewer-5554d4d955-2bvgn   1/1     Running       0          4s
k8s-resource-viewer-667f77cb56-n7ft2   1/1     Terminating   0          10m
builder@LuiGi:~/Workspaces/jekyll-blog$ kubectl port-forward svc/k8s-resource-viewer 8088:80
Forwarding from 127.0.0.1:8088 -> 5000
Forwarding from [::1]:8088 -> 5000

So this was the first (very minor) mistake. When it updated the UI (which is exactly what i wanted), it lost my additional columns. Still, this is a good 0.2

Wow, asking to add it back, it realized it made the mistake. Impressive

/content/images/2025/02/cursorai-14.png

This is looking so good. I love the color scheme on the selectors.

/content/images/2025/02/cursorai-15.png

I’m calling it done. I have a nice UI, filters and sorts and it functions. I even had Cursor help build a README.md (though it did get a bit stuck on markdown output)

Sharing

I created a new Public Repo and pushed the content out there

PS C:\Users\isaac\Workspaces\testproj> git remote add origin https://github.com/idjohnson/k8sresourceviewer.git
PS C:\Users\isaac\Workspaces\testproj> git push -u origin main
Enumerating objects: 29, done.
Counting objects: 100% (29/29), done.
Delta compression using up to 16 threads
Compressing objects: 100% (20/20), done.
Writing objects: 100% (29/29), 68.42 KiB | 5.70 MiB/s, done.
Total 29 (delta 9), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (9/9), done.
To https://github.com/idjohnson/k8sresourceviewer.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

You can view, edit and fork it at https://github.com/idjohnson/k8sresourceviewer

/content/images/2025/02/cursorai-16.png

Pricing

We can log into the Web interface of Cursor to see how much we’ve used

/content/images/2025/02/cursorai-17.png

It looks like this little OS project consumed 7 of my total 150 requests.

I can upgrade to Pro for $20/month or $192/year (16/mo).

/content/images/2025/02/cursorai-18.png

That would grant me (today) 500 “fast” requests a month.

In looking closer at the editor, I can verify all those “Premium” requests I made were using Claude 3.5 Sonnet

/content/images/2025/02/cursorai-19.png

Unlike some of the other AI Tools, there is no persistent free tier. It does appear that you get those 150 “requests” and then you’re going to need to pay. I’ll have to test the limit and see if just slows me down.

code: a minor consequence

Something I did not expect to happen is now on my travel laptop, Cursor has taken over from VS Code as the editor that launches when I run code . in a WSL terminal.

I did some searching and found this article that explains why.

To fix, just remove the code and code.cmd files from “%localappdata%\Programs\cursor\resources\app\bin” and you’ll be right as rain.

That said, I did work around by just launching VS Code manually in windows and by default it goes to my last workspace (which is usually in WSL).

Cursor History and Financials

I came across Cursor first from the Startup Ideas Podcast on YouTube.

Cursor, the AI editor, really is a product of Anysphere which was founded in 2022 by four MIT friends, Sualeh Asif, Arvid Lunnemark, Aman Sanger and Micheal Truell.

While a startup, it is backed by some big names like Andreessen Horowitz, Thrive Capital as well as the OpenAI startup Fund. They recently acquired Supermaven, another AI Coding assistent and Pitchbook suggested they have around 32 employees. All the financial apps I reviewed denoted they were in Sieres B with the last deal at $105m. Forbes put their current valuation at around $400m.

Anthropic

We had all this success using Anthropic’s Claude 3.5 model.

Could I just go right to Anthropic?

/content/images/2025/02/anthropic-01.png

I give it a name at startup

/content/images/2025/02/anthropic-02.png

Seems there is a pretty generous free tier

/content/images/2025/02/anthropic-03.png

What is really strange is I closed he window and went to come back and it was gone. I tried to connect but now I see a Claude specific interface

/content/images/2025/02/anthropic-04.png

I did find my way back by going through the “API” route

/content/images/2025/02/anthropic-05.png

But it does seem pay-to-play

/content/images/2025/02/anthropic-06.png

Worse, it wants payment details before showing me the costs: that won’t fly with me

/content/images/2025/02/anthropic-07.png

I can try it with Claude.ai

/content/images/2025/02/anthropic-08.png

I can use Claude to make images

/content/images/2025/02/anthropic-10.png

I asked it to make a Caricature of someone but it refused.

I also had Claude summarize my work summary for six months to find the highlights and it did a fair job. I broke it down similar to Gemini.

Another use I had was to help build out a Bible study. I figured that it likely included religious works in its training. I think it did a pretty good job:

/content/images/2025/02/claudeai-01.png

I got a bit of a kick of it using the whole of Daniel 6. It kind of has a dark ending on that one. Might have gone the Shadrach, Meshach, and Abednego route in Daniel 3 or I dunno, Elijah on Mount Carmel. That’s a cool prophet.

But again, for an LLM, did a pretty decent job.

Claude Pricing

I can see the pricing here is US$20/mo

/content/images/2025/02/anthropic-09.png

Summary

Today I provided an overview of using Cursor, an AI code editor and platform by Anysphere Inc., and Anthropic’s Claude AI. I demonstrated how to set up Cursor, create an account, and build a full-featured app using the editor.

I included detailed steps for installing Cursor, logging in, and using it to generate code for a Flask app that lists Kubernetes services and ingresses. I also explored using Anthropic’s Claude AI directly and through Claude.ai, highlighting the capabilities and pricing of both tools.

Lastly, I covered a bit of Cursor’s history, financials, and my experience with using Claude AI for various tasks.

Overall, I find Cursor to be an excellent alternative to VS Code. However, with all the plugins on VS Code and being able to use Codeserver in Kubernetes, I doubt I’ll fully switch. Claude.ai gave me interesting non coding answers and I might use that to help build content (as I do with Napkin.ai today)

OpenSource Github AI Cursor Claude Anthropic

Have something to add? Feedback? You can use the feedback form

Isaac Johnson

Isaac Johnson

Cloud Solutions Architect

Isaac is a CSA and DevOps engineer who focuses on cloud migrations and devops processes. He also is a dad to three wonderful daughters (hence the references to Princess King sprinkled throughout the blog).

Theme built by C.S. Rhymes