Repository navigation
Description
Note
GPT-6 Astra on behalf of PsychedelicShayna
Contract
NeoCode is a graphical interface to NeoPi, not a multi-harness frontend with NeoPi as an optional adapter. Remove the Codex, Claude, Cursor, Grok, OpenCode and Antigravity harness implementations, registrations, selectors and obsolete dependencies/tests. Inference providers served by NeoPi remain available; they are not the removed harness adapters.
This is the owner's explicit change of direction from #59/#93, not an unresolved choice between alternatives. Preserve native NeoPi sessions and existing user data. Do not silently delete old transcripts or reinterpret legacy saved model/provider identities as NeoPi identities. Startup must recover clearly from an obsolete saved harness choice.
Acceptance
- NeoPi is the only execution harness across server, desktop, web and mobile contracts and registration paths.
- Other harness implementations and obsolete selectors/dependencies are removed, not merely hidden behind disabled defaults.
- Existing user history and native NeoPi settings remain intact; legacy configuration has an explicit safe transition.
- No competing GUI-owned inference-provider account store or model-role resolver is introduced.
- Focused checks and isolated ordinary launch/send/resume proof establish the cutover; actual lockout risk uses the workspace canary path.
Models-page, NeoCore settings, native journal/tree, live synchronization, mobile distribution and visual redesign are separate issues. The full source message is retained here for their provenance.
Owner's words (verbatim)
2026-10-22 owner dictation
Is it safe to say that currently also in, in parentheses, I like what you did with the top left. I mean, I know it's a thing that was embedded in there somehow. That's how Theo actually has it. but it's a look that I was wondering how, like, he got it. I thought it was like a special look that he had, but I'm guessing there's like something in the harness where it's like, if it's modified, it'll show you like a custom thing. like a custom appearance where it shows you like this top left, you know, the stars and the bottom right when you hit enter, like the, you know, the button to send the prompt. I like that. That's nice. fuck, my original question. is it safe to say that currently only everything after a compaction can be seen? Because I can see the restore feature that you're talking about, but it's not like... I mean, the message count is nowhere near the actual message count, you know what I mean? There's a lot more messages in the actual thread. There's a fundamental difference in the way that threads are structured in Neo code and the way that they function in NeoPy. In NeoPy, they're an append-only tree, so nothing you ever say can ever not get, like, you can't ever not go back to a previous state, right? You can always do slash tree, and slash tree will always bring you to a previous like, point in the transcript. And you said something at the end there where you're saying it cannot control the model. So, if I switch the model in the UI, then are you saying that I won't be able to access, or, or, or that it won't work, or are you saying that it won't switch it in the terminal just because I've switched it in the UI? And are you saying that the UI in the terminal, like a turn that happens in one place doesn't get synchronized, it, like, doesn't immediately show in the other, like they're not synced? you've given me plenty ideas, by the way. there's a list of things I would like you to note down as issues of things that need to be done to improve integration. And yes, your settings fix is so much faster. We'll want to fork The T3 code mobile app as well if it's not already in this repository somewhere, the mobile application is also very important. and needs to... It, it will require minor changes, it won't require much. It just needs to be made aware of the existence of this new harness, and it just needs to be under our control, like installed over ADB, and not installed over the Play Store. Because it updates itself and then makes itself incompatible, and it's a pain in the ass. Now, there's something called Orchestrator V1 or Orchestrator V2 that Theo said he was working on in the harness, which was supposed to mimic, like, or to give it orchestration capabilities. Because he still lives in the world where it's like, oh, he has to use the native harness, right? And he doesn't want to use the native harness to create, like, agents. he wants to, like, create inter-harness agents or some bullshit, or, or, like, create threads and feed threads as if they were sub-agents, right? Which they are, but, like, I mean, just, it's an agent. It's, it's just a fucking agent. I mean, let's just stop with the sub-agent nonsense. Like, can you create the thread and manage it? Like, no, just, just say the thing, you're, you're creating an agent. Like, and it has a thread, yes, but can you, like, spawn an agent? That's really what you're asking. But I suppose, actually quote-unquote, sub-agents as threads is more faithful to my idea than the alternative. because at least there, it's showing it to you, like, it's showing the threads. As, you know, things you can just interact with, it's just showing that it just created a new thread and it just gave it a prompt. But there it doesn't have the level of control that you need to create wacky shit like advisors, right? That requires a sort of fundamental harness level control, basically control over the entire agent data structure. Now, I am adding I assume that this is prox, sorry, provider agnostic. It doesn't give a shit if I add a new provider, take away a provider from my connected NeoPy instance. but I'm gonna have NeoProxy soon. And NeoProxy is gonna be like the sort of core of like, how inference is served. Right, even in the harness, like even in NeoPy, I will have NeoProxy as a provider within NeoPy, right? And that will likely be the only provider that I expose to things like you know, OMP deck, now called NeoDeck, or this T3 code fork, now called NeoCode. It's only going to be this one singular provider, and this one provider is gonna have routes, basically like this multi-stage system. So, well, it's called virtual models, to be specific. You can create a virtual model with any name, just like you, you can create a role with any name. You can assign it to, say, I don't know GPT fucking 6.1 soul which the other day they had an, an outage or something, I don't recall, but they were at, oh yeah, they were at capacity, that was it. So they're at capacity sometimes. Or you're at capacity sometimes. Maybe you're a fucking account is at 91%, which mine is, but I don't care because I have a reset. but imagine you don't. Great, you can pool accounts. That's something that's already a thing in Neopai. Neopai's credential vault can already do this. You can already log in with more than one account. How it actually distributes that, I'm not really sure. I'm not really sure what it does if you have more than one codec subscription and one of them's like nearly out, if it just, I don't know, drains them sequentially, but that's gonna be handled by the proxy layer. so certain functionality is gonna have to be cut out of NeoPy, and this is where we all need to coordinate together, right? Because changing one thing here changes how, changes the implications over there, right? It changes the implications for the GUI. this is why I have been getting to OMP deck last like I haven't gotten to that yet and I haven't gotten to this yet either, because if I, I need to get the core correct and I need to get it like in a sort of state where anything I add to the core is not a foundational change in either the deck or the, or, or NeoCode. neither of the two graphical front ends, right? And you might be wondering, why NeoDeck? Why, what, what's with NeoDeck? Okay, let me explain. Think of NeoCode as a... Think of it as a VS Code, right? It's not VS Code, obviously, but think of it as a VS Code. Think of NeoDeck as a... I suppose like a GitHub. Thing is that analogy, no, that analogy kind of falls flat on its face. GitHub doesn't have an editor. Well, it does, but it's shit. There are several components that are worth naming abstractly, and perhaps I should talk to a agent dedicated for this, like a fable agent or a opus, or a council, actually, really, a council would be nice. but think of it like this. We have the local component. Let's start with, like, what we have concretely. We have credential stores. This, we, we have a core, and these, this core is a credential store, a vault. This can connect to all different providers and send inference to all of these different providers. Great. Now, how do we build something around that? Well, we build an API, an engine, that can communicate over our PC, or over whatever. It can be our own protocol. I don't know if our PC is, like, limiting in some way for you, but it can do things that no other, yeah, it, it, yeah, I don't know if our PC's sufficient, is it? It's just fucking JSON, isn't it? And for the things I'm imagining, it's like we'd want our own protocol, sort of. I mean, like UDP Would be kind of necessary for some of the things I have in mind. Voice whiteboard would be nice right now. Yeah, I could do a voice whiteboard session. It's Composer 2.5 Fast, I'll let I have it. Something is draining my fucking XAI, like, somewhere, I don't know, Hermes or something, somewhere. but as for the immediate things that I can tell you, you can go implement, like right now, that you should just start working on. Sessions are a tree, and this is one of the things I like about Py the most, right? Baseline Py which OMP is based on, the slash tree command, no other harness does it so goddamn well, that you can just see the entire fucking timeline as a tree, and just jump back and forth between, like, you know, you can filter out, like, tool calls, system events, and you see everything there, and you can just jump back to any point in time. The session never has a rewind ability that doesn't, that, that, like, loses state. Every point of, every point in the execution of a run is some point that you can return to with slash three, right? And you can return to it a thousand times and have a hundred alternate timelines, and you can bring information from the future into the past with a summarizer that summarizes what has happened since then, and you, you can just literally bring information into the past and save yourself, and it, and it saves your context window too. So like it resets your context, well, it doesn't reset your context window, it's just, it stores your, well, your messages. You'll bust the cache, sure, but I mean, will you? So you're not contradicting the prefix. You're still, no, yeah, you wouldn't bust the cache until you come to, you, you like, you know, write a different prefix, and only then you'd, you'd only bust as much as you'd rewind, like just the extent of your rewind, but it's not that much different from making you thread. Think of tree, and think of your UI in Neo code. How is that supposed to be compatible? The, specifically, you have this thread view right on the side that's minimal. If I want to return to any point in this thread, which I can do in the terminal, but I cannot do here, let me unsettle. The Sailor Saturn pane, which I find ironic that it's settled when I just opened it today. and I can scroll up already, and I can already see history that it's not available, like, just because there's a remote compaction and a cache miss. so now... Oh, wow. Yeah, the remote compacted is just hiding the transcripts. Every compaction hides transcript portions. Well, that must, that explains it. Okay, so you're not showing everything before the compaction line. Okay, well, that's fair. still, there should be like a visual indicator that says, hey, there's been a compaction there, right? That's one of the first things you, first things that need to be get the Glotton to parity. something that you can do now, right, without me having to fucking think of all the design is handling threads. Getting threads to work exactly as they work in the TUI, but inside of the harness, right? And I saw earlier in all projects, you cannot select a project that isn't part of your current directory. I see that there's filter threads by project, right? the thing is, I cannot get rid of the filter. Oh yeah, I can. I can select all projects and then resume NeoPy session, all projects. Nope. Still can't, actually. So, what is exactly tying me to this specific repo- Well, why am I tied? Yeah, this doesn't make sense here. I just selected my source repos, psychedelic shana, as a place to make my new thread. I clicked new thread, and I'm in psychedelic shana under GitHub. Right? Now I go through session restore, all projects, almost everything is grayed out. NeoPy, there's one that's in NeoPy which isn't, so it's a subdirectory. There's one in NeoPy which also isn't. And then, and there's one in home, shana, tmp, which is gray, makes sense, even though like it shouldn't be like that. But now there's one in slash tmp that's not gray, in like tempfs, in like the very root of my hard drive. That's inconsistent. And now I see one that's in home, shana, source, github, psychedelic shana, env, or, en, yeah, envim cloud dash worktree, yeah, envim cloud worktree solve five point six medium. It's, it's like a run, basically, it was a worktree run. Why can't I resume that? But I can resume home China repos NeoPy, even though I'm not at the symlink location. I'm at the full canonical location. When I was at the fucking symlink location, I had to go to the full canonical location first, otherwise it wouldn't show me, it wouldn't allow me, because it did, it just got confused with the symlink and the canonical path, so I had to be in the canonical path first to be able to resume Saturn. That right there, your resume feature, okay, nice, it's there, it exists. it needs work, a lot of work. You need, first of all, to think of the thread model, the way that threads differ, and completely fundamentally differ between the two things. Threads do not function the way they do in they, they don't func, they don't function the same way. The history, that is. You need to have parity with the history. Now, if that means breaking compatibility with other harnesses, do it. Go right ahead, right? You do not need to cater to the other harnesses. If anything, you can go into fucking providers and just delete everything else and just keep NeoPy. At which point it's not even a check mark anymore, it's just an interface for where you have the binary and where you have the profile, and then you have a section for models, right? That section for models some of them have fast mode and reasoning. I don't know why it shows fast mode in the columns when it's just, like, a role, like slow, small, default. fast mode, it thinks fast mode is enabled, and it's applying it to literally everything. Okay, so that's another bug. Or either that, or it's saying that fast mode is an available thing for that. But it's showing that for every model. Yeah, every model shows fast mode. Except, oh, hold on, I found, well, no. Never mind, I, I didn't. Yeah, I thought I saw, I found one that's only reasoning, but no, that it's, it's just fast mode reasoning. They're all fast mode. And some show reasoning, and yet the roles do not show reasoning, even if they map to a model that does have reasoning. I would change this whole model display area thingy. I would design something yourself, something custom. It was bad enough that it caused the whole fucking thing to lag that badly, but That's where you should have your equivalents, in my opinion where this section, instead of being called providers in the sense of, you know, harness providers, that should be your equivalent of slash models in the T Y. That whole page should be that models section that's, you know, it's this tiny little thing, that should be promoted to the whole thing. You can't ditch everything else. Codex, Claude, Cursor, Grok, OpenCode, AntiGravity, who gives a fuck? Give, delete all of them. I don't want T3 code. This isn't T3 code, right? this is, this is Neo code. And as long as there's a, you know, established connection to NeoPy, well, that's it. All these other things, like Codex Cloud, Cursor, Grok, OpenCode, AntiGravity, everything except for AntiGravity, I literally already have in fucking NeoPy. It's just that powerful. And AntiGravity, I'm never enabling it or ever getting it because it's, Google is weird, and they make shit models. So, it's deliberate. Like, literally, I can just, I have all of OpenCode's models inside of, inside of my harness, even their free ones. I have all of Grok's models, I have all of Cursor, Cloud, Codex, and if I want to use the harness, then I can just use the harness. I can just open that harness, or use actual T3 code, right? If I want like a, you know, a harness orchestrator, I can keep like an actual build of T3 code separately, but this is not T3 code. First thing on the chopping block is providers, or re- reorientation block, I guess. Delete every provider except for NeoPy, at which point there is no list of providers in the sense that there was before. The list of providers now becomes the same list of providers you see on the sidebar when you do slash models. It's the list of providers within NeoPy. They named it pretty, pretty conveniently, actually. Because that is what we're replacing it with, we're replacing it with providers. You should be able to log in to each provider that's listed in the sidebar of slash models. So every provider that NeoPy supports Which is just inherited from upstream OMP. That's what should be in there. Like occupying the whole section, the whole provider's menu. And yeah, okay, sure. No, I wouldn't even put like display name or runtime, profile, launch arguments, environment variables. This doesn't belong here, because this is like config, like startup config. I would put this under a section called something like system, or runtime, actually. Yeah, considering the runtime is gonna be a very important thing that comes up often, I would make a whole section on the left called runtime and move binary path, profile, launch arguments, and environment variables to a section on the left called runtime, which, believe me, it will increase in size. Because when we start connecting NeoDeck to it, and we start connecting Neo, like, NeoProxy to it, runtime is gonna, you know... Or maybe we should call it NeoCore. Make a section called NeoCore and make all that has to do with, like, launching everything just be in there. Or, like, launching and connecting to all the other Neo services, let's say. Neo processes. The NeoCore daemon. Which is ultimately what I'm gonna have to create to bridge all these different things together is a daemon service that I can launch MPI under. So I can run like MPI like core D, right, as a subcommand. And when I'm able to do that, and I can daemonize MPI and have it not be a terminal user interface, but just be a core daemon that basically exposes the harness's guts and internals and allows you to, you basically could just communicate with that, you know, daemon and be like, hey, daemon, I need an agent, right? Can you create an agent? and you just communicate over, you know, maybe WebSocket for compatibility. You just tell it, I need a, I need a, yeah, I just need an agent. And at that point, what protocol do we use? Do we just send everything over JSON? These are questions I should be asking a whiteboard agent, but maybe it'll have some insights. but yeah, make a section on the left called NeoCore. Move the runtime area from the providers section inside of Neo, like the NeoPy section inside of the providers section, where it says setup, runtime, binary path, profile, launch arguments, and then environment, and then, there we go to the juicy part, models, right? That section where it says models, where it's just relegated to this little piece at the bottom of the provider, like, that should be the entire provider screen. That should be the whole page. Everything else should be gone. And I think you can simplify your life massively if you delete support for all the other harnesses. I'm not sure, right? If they're out, if they stay out of the way, right, and it doesn't require, like, because we're gonna have to change the internal way the threads are stored completely, right? And basically submit to NeoPy as the source of truth. Right now, I'm guessing I'm guessing that NeoCode is, has like some database or has its own way. A storing threads, and that's probably why it probably has like an SQL database or some shit. Make it not be one. Make NeoCode Follow the exact same session format as NeoPy, which is not a difficult one, by the way, but it's a tree-based one. Slash tree allows you to jump to any point. You can elite hide something from being rendered, but it doesn't remove it from the history. And you should still be able to go back there. If you do slash tree, I don't know if it, I don't even know if I can do that in here, but yeah, tree is hidden. Tree is a hidden command. That's the thing. You have a UI for representing a tree. Now, the minimalist, you know, settle the threads sort of thing, that is not incompatible. That is a broader level, like session level thing, right? That's continuing session. That, that is your resume menu, right? That's how you resume threads. It's that sidebar to the left. You have a sidebar to the right, however, that you can make use of. You don't need to touch the sidebar to the left. Well, actually, you could. You could technically have multiple, like modules, like, multiple like, sections. and you could, like, toggle between them, whatever you top. You could have, like, a little dropdown, and you can select between, like but that's awkward, I like that. Neo code is, yeah, usually the left bar is like always open. The bottom left usage stats page, by the way, is broken. even though we have slash usage and we have the slash stats command in NPI, and that has such a rich amount of data, so the data's there. So the usage section, that's another thing, by the way, just saying, the usage section, oh, never mind, it was just calculating. NeoPy 2000 sessions, Jesus Christ. Thirty-four billion tokens. Okay, I stand corrected. Apparently, I've spent three thousand dollars on Opus 5.5 and three thousand on Astra and two thousand eight hundred on Fable and one thousand on Grok 4.7. Jesus, that's the advisor system right there kicking me in the ass. GPT-6 Luna, despite everything, despite 5.6 billion tokens, it only costs a hundred? Firefox 7 only did 1.56 billion as a thousand, Jesus Christ. That's actually really good relative, like numbering. 800 million with GPT 6, 5.6 sol, 451. 4.5, I did sub 351 million, and it's only 213. It's not really sorted by share, but, okay I'm getting distracted. So, I'm a fan. It's, it does take a little bit of time for it to process and calculate, but you have a pattern there. You see how you click that and it takes over the whole UI? You can reutilize that. Think about it. Also, I clicked from 30 days to 90 days and yeah, it's the same thing, it took forever. $22,000 across 90 days is You can enrich this data with the slash stats page, the slash stats, like, that, that button right there should be slash stats. Slash stats shows you all that information, but even richer, and it shows you traces and session, like, session data. That should be the slash stats command. You know, the web UI that slash stat, slash stats leads to, it should be the same one that, that usage thing leads to. Just saying. There's a PR button, pull requests. Okay. And that's relative to what? If I select my fork. it takes way too long to apply a filter. You see, I do new apply, and it's showing me upstream's PRs instead of my PRs, simply because it's a fork of upstream. I think that has to change. That behavior's weird. Unless I'm, like, misunderstanding something. Yeah, pull requests, all, all, yeah. But the other options are open, close marriage, yeah, I wanna see all of them, and, you know, reviewing an authored. Authored? Well, nothing shows up. This is like, I haven't authored anything, even though I have. I do all projects, and then I do involvement authored. Nope, nothing. And it takes way too long to refresh, too. Yeah, so that page is broken, in my opinion. The way that it functions is not useful to me. I cannot see the, the PRs of my projects. and I don't know what it's relative to. I would assume that whatever project I'm currently in, I click the PR button, it shows me the PRs for that project, right? I would much rather I see why. It's showing upstream instead of remote. It's showing, yeah, it's not showing psychedelic Shane slash Neo NeoPy. This is showing, okay, hold on. It's classifying oh my pi under, yeah, it's calling repos neo pi can one three five seven slash oh my pi. It's not recognizing the fact that it's a fork because it's listening to it being it's listening to upstream being present, and it's not listening to remote. It doesn't care about remote, it cares about upstream. In other words, that makes it just useless for me. It's showing me PRs of a repo that isn't mine. That's a behavior that needs to change. You need to change that behavior. The stats page needs to be the stats page of, like, you know, slash stats that it opens, the web, like the web UI, which should be easy because this is an Electron app. So you can just literally take it and just shove it in here elegantly, though, right? Don't just botch it. and if you could also, like, mimic the, the style and the aesthetic. the current aesthetic is not bad, but I want, like, uni- uniformity. And the nice thing is that the stars in the top left and the, like, aura sort of submit button are not incompatible. In fact, they actually quite complement you know, the OMP style. Neo Proxy did this perfectly, by the way. Neo Proxy is beautiful. It's running at the moment. Like the pages, anyway. It's a demonstrative page. It's running on port 8 3 1 7 on localhost slash neo pound slash virtual dash models slash vm dash review. You can just, like, you need like a token to access it, but it's like a fake token. It's just, the, the, it's not really like running right now. It's not an actual proxy. It's just the front end. It's a demonstrative thing. But you can look at how that, like the aesthetics of that, Fable did a, Fable did a fantastic job. Like Fable did a marvelous job with this. Even with the demonstrative part of it, it, it, it's beautiful. And since you're an Electron app, you can copy that aesthetic. So that's the other thing that's part of the list. Synchronize your aesthetic with the rest of the NPI, the NeoPI aesthetic. They all follow the same aesthetic. Right? Even the font is the same. Well, I don't know if the font is the same, but see the branding, there is no, like, you, you, there's Neo code at the very top, yes, but there's no icon. In the proxy you will see an icon at the very top left. And I want that, like, everywhere. You know, the pi symbol, and that specific one, by the way. Because it sort of makes it easy to identify that this is a Neo something, this is related to NeoPy. It's like, you know, a slash, like a dash, rather, and it has like a, has like a, a, a part that droops lower than the other. It's a pi, it's a pi symbol. It's the simplest form of pi. I want that to be in place of the button that says, like, toggle main sidebar. Instead it should just say, it just should be that icon and then, like, you know, show Neo code in the same type of font, and then lead to the rest of the UI, which should be in that style. So you gotta, you'll have to restyle the entire UI, I'm sorry, but you're gonna have to restyle everything to be in conformance with the style that you see in The slash stats page, and which I pointed to, by the way, I pointed to slash stats, I pointed Fable to slash stats and it understood perfectly well the design language, and it created a very marvelous page. It's very beautiful. I applaud the work. You can just check the HTML as well, if you like. But yeah, that's what you're aiming for. Making it look like that, following the same, you know, color palette, but also like the the same core design principles, right? For design decisions, the same, same design rules. I have not looked at NPI deck, or sorry, Neo deck. I hope Fable did a very good job there as well. I would cite NeoDeck as another example of what you should be striving towards, but I haven't looked at it yet. I wanted to do you first because I have a feeling NeoDeck has the biggest chance of disappointing me, but I'm not sure. Maybe it'll really, really make me happy. but yeah, look at the NeoProxy UI. That, that right there is what you should be striving for aesthetics-wise. Like, making the aesthetics like that. You can keep the stars, and you can keep, keep the purple submit button. Otherwise, redesign the whole fucking UI around that. And I hate this floating composer thing. It's, it's just, I hate it. It's just pointless. Oh, appearance. By the way, is the one section that also gets really, really laggy. Whenever you click on appearance, it lags for like over, yeah, that took like six or seven seconds. And sometimes it doesn't stop, like it really is horrible. I have panel animations down to zero milliseconds. I'm gonna reset it. Oh, it's already at zero, okay. Well, I'm gonna set it to 150 to see if chat width wide, maybe. By the way, appearance should list the themes that the terminal user interface has, not whatever the fuck this is. Key bindings, again, should also be based around terminal user interface, but I-I won't blame you for that. General has workspace rules, yes, that makes sense. yeah, search on origin, this all, yeah, this is all fine. In legacy features, having plan mode in there and context window indicator, I hate that. Like, I like having information about what the fuck's happening. I like the new sidebar, I don't like the legacy sidebar, I think it sucks. So I think it's good there, but Jesus, I just clicked appearance again. And it appears like it it just freezes the whole fucking thing. That's so shit. Alright, now I've clicked on it, now I'm gonna click away. It's so dumb. And it just takes an instant to click away. Source control no opinion about that right now. Storage, delete work trees with threads, delete inactive work trees. This sounds like the issue that we were having recently. Yeah, delete merge work trees. Yeah. You can leave that. Yeah, storage is fine. Connections, this is where we will need to get into like the mobile app and everything, because I will want to utilize like Tailscale and also introduce zero tier, first party zero tier support at some point. Zero tier is uns, like there is no first party support for it, right? we're gonna add that eventually. just as an issue you could file if you want. You can add a lot of these things as issues to file and then start implementing. yeah, I don't like the composer. The composer sucks. Like this floating composer that just leaves a little gap, like a little seam, and it just, you know, when you switch models, it's just like this rinky dink little tiny floating thing, and with the amount of models we have, it's like, what the fuck? The sidebar where it normally shows harnesses should instead show providers. Right, instead of showing NeoPy, well, it only shows NeoPy right now. That's the thing. Because I disable all the other ones, so it just says NeoPy, so just, it's just a pointless button there, so you can click NeoPy, and then you can see the models, right? Instead, it should be like, I don't know roles, maybe you know, virtual models, and then maybe like codecs for codecs models, anthropic icon for anthropic models. But, so you can reutilize like the Claude code and the codecs icons, you can reutilize the icons, right? But use them and add a bunch more but use them for specifically the providers as it pertains to the providers inside of Neo inside of NeoPy. So slash models has a shitload of providers on the, on the left, when you do slash models. And every one of them has an icon, like they have a brand. This column of icons that you see there should be a column of those icons, not a column of harnesses, because, again, like I said, fucking delete the rest of them. It, it, they don't matter. This is Neo code, not Neo, this is not T3 code. If I want T3 code, I'll launch T3 code. This is just a baseline for something different, okay? So you can fill that whole thing with icons for all the providers of, like Neo code. So I have, like, let's, let's see, what do I have? I'll tell you what I have. I have obliteration, I have Alibaba token plan, I have anthropic, I have cerebrus, cursor, devon, github copilot, google, rock build, grok with a q, hugging face, kimi code, local, meta, mixture of agents, so MOA basically, moonshot, nano GPT Noah's portal, that's just like Hermes portal basically, Nvidia, OpenAI codex, OpenCodeGo, OpenCodeZen, OpenRouter, Sakana, Vercel AI gateway, Web, XAI OAuth, ZAI, and now there's a shitload of others that are grayed out. But it ended at ZAI, the ones that I actually have, and Noah's portal is actually lacking a key, I think. there's like some connection issue with that, but whatever, doesn't really matter. isn't your issue. But yeah, if you go down there, there's like Deepseek, you know, there's, you know, Mistral's down there somewhere, Kilo Code is down there somewhere. but that list, that's what you should have there. Right? And then you have the roles section when you do that, you know, you have roles and then you have that big list. those roles, that's where you assign them inside of the terminal user interface. You either go into the roles section and you assign and create roles, or you enter that list section. Now, the composer shouldn't be small, it shouldn't be like this, it, it should be, like, it should take, it should be docked. Okay, just take the damn thing and make it same size. Just make, just dock it. Take the edges, expand it, make it part of the fucking frame, make it a constant size. Don't make it like, you know, go up and down or like try to like make itself more inconvenient or less convenient, right? It's just, that just sucks. I hate that. It just makes your text jump around. It, I don't know. It just sucks ass in my opinion. Make it a constant thing. A thing that's just not, not floating chat box, pop up whatever, rounded borders, just dock it with the damn surroundings. And things that are like below it, just put it beside, like local checkout it says, a neopi. Actually no, you just keep it there. Just keep it there. It's just, just dock the damn thing. God, now that I noticed that, I hate it even more. It's like a, ew. It's like a A gun and it's differently colored. Didn't even get the same background color. I can tell I have really sharp eyes. Suppose some transparency bullshit, it should eliminate all that. Make it consistent with the style of Neo Proxy. Dock that thing and that model selector and that effort level. Those are status line components, now that I think about it. If I look at my current status line, which is built for information efficiency, more than anything else, not aesthetics. There's the session title, there's the branch, the hosting, blah blah blah, but then I have the thing, I have a section for the model, not the project. The project information and like, you know, global info I have above, and then the, the session specific info I have I have at the bottom. That's how I have it set up. GPT-6 Astra, extra high, so that's basically model, reasoning level. I have the tokens per second, a cash rate, a cash hit rate indicator, a context, context window percentage like visualization bar, and a total thread cost. Would that fit, and, and, and the UI, the GUI has this full access thing, like supervised. This should not be there because you're not gonna change your mind constantly about that. It should be like above. You should hide that in the top section somewhere. Like, you already created a button there for, called NeoPy session configuration, where you, you, you hid follow model changes. yeah, instead of adding a bunch of new buttons for every single thing that NeoPy has, the, the, the session title is up there. Huh. It kind of follows what I already have. The composer that I have, the status line that I have inside of NeoPy is kind of how it's structured inside of, inside of NeoCode. It's just that it has the thread in between the top and the bottom. I, okay, that's interesting. But it's basically true. And it would work. If you repeated the same thing, it would work. And the thread name is not so important that the thread, like, appears, that the full title appear at the very top. It can be truncated, it's fine, because you have the sidebar. The sidebar allows you to switch between threads, and when you hover over a thread, it shows you, like, a card, and that shows you the whole name, and it shows you, you know, the, the, the repository, it shows you the host, it shows you the model, it shows you all this information. All the additional information that you could put at the top of the bar, but you can't because it's being hidden by the title, maybe And also being hidden by this goddamn open, yeah. Here's another thing. there's a thing, a button there, where it's set to cursor by default. I don't use cursor, I don't use Z, IntelliJ IDEA, or files. I use none of these things. and it's impossible, I think, to get rid of this fucking button. I don't know if you can get rid of it somewhere in the settings, but please get rid of that button. I hate it. There's already a button for, like, actions. And you can write, like, you just put commands there. So if I want something, I'll just put it there. Just allow me to also, I don't know if that's just for GitHub actions, though. Project scope, oh yeah, project scope commands you can run from the top bar. So not global scopes. I can't add an action that's like open in NeoVid, which is something I would want to open a project directory in, like N E O V I D E. Right, open in that, sure. But this whole open in button, I don't like it. That should be, again, a modular action. That should be a thing that you like. Oh, continue in terminal. The session is still open in the terminal process. Neo code merely detached. Close, close the session in that terminal before continuing it elsewhere. I see, so you cannot. Okay. So you have to switch, you have to like continue internal if I'm active here and okay. So I'm detached, but there's no indication that I'm detached. That's a visual communication problem. But let me again go back to the model selector. In the TUI, you can't simply click on the model. Well, you could, maybe that's a feature I might add, but I usually do alt M. That brings me to the the, the model page, right? Which is in reality not the model page, it's the settings page for, or what should be the settings page for providers, right? What alt M reaches, like slash models, should be what the provider's page in the settings is. Right? And doing alt M in T3 code does nothing. so doing it in Neo code should open that settings page with that provider list. But that settings page with that provider list shouldn't be hidden in the settings. It should be a button just like usage is. See how usage takes over the, like, composer page, but it doesn't get rid of the sidebar? And it just shows you like a back button. Same as like PRs, pull requests, even though the pull request section is, well, it's not broken, it's just that it's misreading my repository as belonging to, like, upstream and not me. But, fair. but you see how those two, they just take over the central, like, central page? Because they don't need a sidebar. Only settings needs a secondary, like a tab bar on the left. Oh, fuck, I hit appearance again. I hit appearance again. God damn it. Okay, let's wait 12 seconds for the program to unfreeze. Okay, there we go. but yeah. It's just, it needs a sidebar because there's a lot of things. Right. Just like the slash models section, that also has a sidebar. Perhaps there should be a button there, which you can click or you can hit alt M, and it brings you to this model selector, just like the, the view in the T Y. Except, and, except it, it replaces the sidebar, just like the settings button does, right? And the pull request button and the usage button doesn't, because neither of them require a sidebar, but the settings button does require a sidebar, but it just replaces it with setting categories, right? But the layout is identical. It's 100% identical. Where if you click that, that fourth button, right, it would act a bit like the settings button in that it would replace the sidebar that shows your threads, but it would, it would, it would replace it with all of the different providers, like obliteration, Alibaba Token Plan, Anthropix, Rebus, Cursor, Devon, GitHub Copilot, Google, et cetera, et cetera, et cetera. I went through it before. and then all of the ones that you don't have connected that are grayed out. That should, that what should be on the left. And at the very top, there should be like a divider section, and there should be like a, you know, all models. There should be effort rules, all models, and roles. So you should be able to, in that section, like basically copy the terminal user interface. Copy how that works. Just represent it graphically in a new page with a new button. And cause the terminal user interface already gives you the design. It's just, yeah, you just have a sidebar, and you have like a divider, then you have effort rules, another divider, and then you have all models and rules. Oh, sorry, roles. When you're in roles, that changes the page entirely. When you click on all models, that shows you every single model. And if you click on a model first, then you can assign a role later. If you click on a role, on a role first, then you select a model or a pattern or blah, blah, blah. There's, you know, complex behavior there with regular expressions and everything that we recently added, so you might want to, like, look into the code there. But you would basically want to mimic that, and you would be writing to the same settings file. Well, like a mutex or something, but I can do this from several, like sessions. I can do this from, from from several T3 code, sorry, from several NeoPy instances at the same time. Like, and they even update each other. Sometimes I change the theme in one and it updates the other ones. Or I change, like, a model of a role in one and it changes it in the other one. Why not share it also with the GUI? Why not share that same thing with NeoCode? I say yes, I say share it with NeoCode. Let NeoCode just be another surface. And make NeoCode bend to the will of NeoPi. Okay? NeoPi isn't being implemented in D3 code. NeoCode bends to the will of NeoPi. NeoPi does not recognize any other harness. The only providers are the gigantic list I've given you, not Codex, not Claude, not Cursor, not Grok, not OpenCode, not AntiGravity. There's so much code you could fucking delete. And make it smaller and just more compact. We don't need any of that code, seriously, just get rid of it. Just all of it. There should not, there shouldn't be like a section, and yeah, when you click on the, the switcher, the model switcher button, what you're actually doing is clicking the, the equivalent of alt P. Alt P runs slash switch. Slash switch isn't to be confused with slash models it's also a little pop-up basically, except that pop-up in the terminal user interface occupies the whole width of the, like, it, it occupies the whole width. It doesn't, like, occupy like a floating little window, it just occupies the whole width of the terminal, but not the whole height. That's, that works, that's exactly what it should do. That model picker, right, when you click on the, like, model picker or the current model, it should show you a model picker, right, just like the one it shows you inside of the DUI, where it shows you the model at the very left, like provider slash model, then it shows you the intelligence level in a column on the right side, like the first column from the right like on the right side. No, first column, okay, there's like a left and a right segment. The first column in the right segment, starting from the left to the right, is the intelligence index level. So, like, I can see, like, GBD-6 Luda is a 43, Grok 4.5 is a 38, Grok 4.3 is a 39. Oh, I guess they didn't update. The, yeah, cause they, they updated the scoring thing, the algorithm recently, but whatever. then I can see the time to first token, the tokens per second, the context window size, and the input dollar amount and output dollar amount, like per million tokens. I don't see any of that information here. I see zero information. Right? It's, it's so useless in comparison to what we have. And the search does not support regular expressions, does it? Probably not. well, we do. So, you already have a reference point of, like, what to make the model bigger actually be. It's literally just copy what's in the TUI, slash switch, and add a button. Like, next to usage, if you will, although we can ch- we can discuss the order of, like, which button to place a grid to put where later but just place a button there where when you click it, it just opens a menu similar like the settings menu, except the sidebar gets replaced with the list of providers, and then the right menu contains the actual list list of models or the list of roles. And you click on the left you click on a provider, it shows you the models for that provider. It's literally just one-to-one. That and doc, remove the thing that makes it float, the, make, make the composer stick, stay in one place. Just dock it, just expand it outward so it like, you know, fucking sticks to the side and doesn't try to float and like be, like be annoying. Take all the dynamicness, the, the inter, like, just stop trying to, it's, it's trying to be dynamic and I hate it, is basically what I'm trying to say. Make it, just make it fixed. Fix its position, don't make it float, and yeah. And make the aesthetic of the entire interface, like, make the whole appearance of the whole thing compliant with the OMP design. And yes, I said OMP intentionally because that's where it comes from. OMP slash stats well, well, we have the same NPI slash stats has a page, which I based the NeoProxy page off of. Look at the source code of it, or look at the running instance. hell, you can just look at my other screen. You can use computer use if you like. I'll hide anything of like, of notes, of value, there's just emails and, and a Telegram chat I don't care about. So, yeah, you could just use computer use. What you will see is a browser with the Neo Proxy page open. You can go ahead and click around a few times if you like until you get the gist. Or just copy the URL if you like, and just visit it yourself. Though, I don't know if it'll allow you because you need to put like a token. I can give that token to you, but you can, you're smart enough to, like, figure it out on your own. It's, it's a bullshit token. It's not real. Ni- none of the page is real. It's just, like, it shows, like you know, preview data, because it's just front end. It's no back end yet. I think that's good enough for a first initial pass, I think, of stuff to do. So, go ahead and start. That's a lot of shit. Sort through all that shit, turn it into issues you know, label the issues, and then get to work. Start implementing. Ship, ship, ship. Alright? Ship it into nightly. Don't hesitate if you're, like, 80% or above short, merge it into nightly. Build it, merge it, test it. You have a X virtual frame, oh, right, restarted. you can create an X virtual frame buffer if you like. I would like to be able to create multiple instances of the fucking window, by the way. I hate the fact that I cannot have it open while you have it open. I'm guessing that's because of the way that the database is designed, but the way the database is designed is based off of something that we don't, we're not subject to. Like the other harnesses, we don't care about them. This is not T3 code, we don't need to care about their threads or their sessions or the way that they do things or orchestrator version two or like all this bullshit, just delete all that crap. Just go out with it. There is only NeoPy. This is NeoCode. This is just a GUI of NeoCode. You can, a lot of the work is reductive. It's cutting things from the, from the fucking thing rather than adding things to it. And you can re-reutilize a lot of the same patterns which are already in the thing, but just, you know, and, and reutilize them to match what's in the TUI. Match the equivalent TUI page. That's all of the work for now. I will be back later. please get started and do not stop. Just ship, ship, ship, merge, merge, merge. Eighty percent share, merge it.
The owner's words take precedence over this summary. This issue owns the harness cutover, not all of the other requests in the source message; those are tracked separately.
Activity
PsychedelicShayna commentedon Oct 22, 2026
Note
GPT-6 Astra on behalf of PsychedelicShayna
The owner's 2026-10-22 mandate is split into the following separately scoped records. The full original message remains above; the child issues preserve relevant contiguous excerpts.
Existing #113 continues to own authoritative model-role/advisor editing and configuration synchronization. Existing delivered restoration/defaults/branding receipts are retained; the new cutover supersedes the earlier multi-harness product direction. Usage was slow to calculate, not missing, as the owner corrected. #147 and #148 record future direction only.
refactor(web): remove retired harness accent styles
merge(neopi): preserve native settings through harness cutover
feat(mobile): consume native Models and conversation state
fix(build): remove retired harness worker entries
fix(models): accept unknown native limits and keep setup reachable
fix(composer): retain drafts and forward native slash commands
fix(appearance): keep native palettes local and opt-in
fix(startup): skip missing projects without losing saved history
fix(branding): recognize pinned nightly canary versions
docs(fork): record canary recovery ownership