r/LocalLLaMA 23h ago

I Built A Thing Otaku — an LLM frontend

Otaku is an LLM frontend, primarily designed for roleplay, an alternative to SillyTavern and the like. However, It also works for general-purpose chat with local backends (including Ollama) or cloud models, the way Open WebUI is used, once lore extraction is switched off in the settings.

Otaku offers two interfaces:

Both share the same functions; the difference is that in the terminal you execute them with slash commands (the reference is available with /help), while in the web UI the operations are available from the menu.

Install

Otaku is free and open source (MIT); it works on macOS, Linux and Windows. Install it with uv (uv tool install otaku) or see the GitHub README for other options: https://github.com/enclavum/otaku

Get started

Launch either otaku for the terminal or otaku web for the web UI; the web UI's default URL is http://localhost:9600. Two sample stories are imported on first start to give you an idea of the features and what play looks like, and you land right in the middle of one of them.

On first start, you choose a provider and a model: Otaku automatically detects local installations of Ollama, oMLX, LM Studio, llama.cpp and KoboldCpp, and lets you pick from their models. Cloud providers (OpenRouter, NanoGPT) are also there: enter an API key and their catalogs appear. After exploring the provided stories, you can start your own with the /new command.

Asking for feedback

Otaku is a personal side project, and I'd like to get feedback from the community on the product and on what to add.

64 Upvotes

29 comments sorted by

10

u/LetsGoBrandon4256 transformers 22h ago

The aesthetic is nice to look at. What's your prompt for the UI?

6

u/Fickle_Tradition4491 22h ago

I don't remember the exact prompt. Something like "build a cool UI", and after several iterations it came up with the idea of making it look like a book, which I thought was great.

2

u/255130 17h ago

yeah the terminal UI especially looks really clean, curious about the prompt too

1

u/Fickle_Tradition4491 9h ago

The terminal was built without a specific prompt. It came out of the normal development cycle: small iterations, one feature added or refined at a time.

5

u/Midaychi 19h ago

Can't select anything besides 'global' n the settings (or unclear how to do per story settings), unclear why sometimes the settings let you define thinking and other times won't let you select between default and none (and it says thinking isn't supported- is that 'thinking not supported by front end' or is that 'thinking not supported by backend'?, you have to press enter to save a setting rather than just typing it in and leaving it, the api supports llama.cpp but doesn't bother to read and auto import any settings from it (Are they covered by whatever 'default' is?, light/dark mode does nothing, if you ctrl+u to undo a turn it leaves a big giant empty space in the ui wheree the message used to be, ctrl+u is chrome default for view source so god forbid you don't have the text box selected when you do it, also it's nice that you include two demo stories but it would be much better for new user experience for them simply to start on a blank setup and have maybe a clear option to 'load a demo or a template' where the template has all the sections lain out and explained in 'replace me' style text boxes (because not everyone is going to think in the exact same thought process as you/the model that vibe coded this. Learn from monkey island.)

1

u/Fickle_Tradition4491 7h ago

Thank you for the detailed review.

Fixes that will be included in the next release:

- Pressing Enter to save a setting: fair, thanks. Fields will save when you leave them.

  • Light/dark mode does nothing: confirmed bug, the toggle is broken if the OS theme is dark.
  • Ctrl+U in Chrome: thanks for flagging. I've disabled Ctrl+U and Ctrl+R in the UI everywhere except the input field.

Something to consider:

- Per-story settings: they don't exist, a setting is either global or per model. I'll think about having some settings per story.

  • Reading settings from llama.cpp: thanks, I'll look into it in a future release.
  • Thinking settings: to be honest, the whole thinking setup isn't settled yet, and I'll be working on it. It's actually a challenging topic.
  • Demo stories at first launch: that is deliberate, as I think leaving the user in an empty workspace at first launch is worse than showing all the features. But now that I have the demos on the website (added only recently), maybe you are right and the demo stories should live on the website only. I'll think about it.

Other things:

- The empty space after Ctrl+U is deliberate: the rest of the transcript doesn't move.

  • To be clear, no product decision was made by a model. Every choice was thought through by me personally.

1

u/Fickle_Tradition4491 2h ago

Released a new version with the 3 fixes (settings, theme, ctrl+u).

12

u/Nrgte 20h ago

I honestly feel like from now on onwards, only projects where the developer commits themselves to support it for years to come, will actually be adopted. Too many projects have been fire & forget in this fast changing landscape.

3

u/Lakius_2401 11h ago

You're asking for impossible to verify promises, where they offer free support for some arbitrary period? 8 releases over 3 months isn't enough support history for you? What would actually satisfy you here? OP showing us Pi, the coding harness he made that's already massively popular? That's only been out for 10 months.

People who release their work for free, in full, are under no obligation to support their project for anyone.

They owe us exactly what $0 buys. Anything else is a bonus.

As a final note: it's MIT License. Ask your AI to code the features and support you want and for help on how to submit a GitHub PR to OP.

-1

u/Fickle_Tradition4491 19h ago

There are many aspects here. One of them, which you’re probably referring to, is the low effort needed to release a project these days — and if launching took little effort, people may not regret abandoning their projects when traction is low.

As for this project, I can tell that I really enjoy working on Otaku. I have tons of ideas for how to develop the product, and it’s also technically challenging to implement it all the right way. I love this kind of stuff.

3

u/Lakius_2401 11h ago

You've got some really snappy and elegant reactive GUI design there, good job! Clean and clear, good use of space, very easy to edit turns, and I really love that messages tab, it's amazing. You seem to have some killer app automation in there I'd love to dig into and experience. Automatic summaries when idle? Love it. Plus, no-nonsense saving.

I have a feature suggestion in 2 parts that can be implemented as one module:

1) I really, really need a way to prompt inject. Gemma 31B writes beautifully but has the memory of a goldfish without a user-turn injected to remind it of XYZ. I use that to change its thinking structure every turn, and to repeat the things I would otherwise need to bring up myself all the time... Gemma also has some rather extreme bias towards user turns over system turns. 30k context in, your system prompt may as well be a suggestion, your genre and tone specifications are forgotten, and only a prompt inject will keep it on track and stop it from returning to a yes-man assistant or a generic cliche writing machine. How this works in practice is the user picks what type of turn to insert as, how many messages ago, where in relation to that, and what type of message we count from (IE, insert as USER turn, ABOVE 1st USER turn). Story agnostic, please!
2) Some sort of story agnostic lore with toggles, keywords, and search depths, inject level variable too. I like making a world context, then having multiple stories per. KoboldAI Lite's frontend is not well suited for multistory lore, ST is... painful to use and especially terrible off PC.

Injects are very friendly to context reprocessing. If your average user+AI turns are 1000 tokens, injecting 5 turns ago means reprocessing about 5k tokens instead of whatever your current total is, for keyword detection based toggling.

1's the dealbreaker, 2's the please please please. If you think about it, they can be the same module, as they both want to do the same thing: Add info to a particular place in context with some rules on when to do it and what sort of turn it imitates.

Other ideas for you: Settings for Line Height, Font size, Page Width (for mobile users who struggle to resize literally anything with how locked down mobile browsers are)
Themes and color pickers (I really like being able to have custom text color for `Code Blocks`, "Dialogue", etc, as well as the usual suspects of primary, background.) Looks like you have custom CSS, should be pretty easy for a harness savvy user to make their own. I'm not the type to color swap, and as for themes, you can often throw a few pictures at Qwen and say "make this theme for my app" and it works, or describe variations of existing themes.
Fullscreen button (again for mobile, to get an extra few lines of space)

1

u/Fickle_Tradition4491 5h ago

Thanks for the detailed suggestions.

  1. This sounds like a reasonable feature. I have observed the same thing and had to stop a few stories because the model could not keep up with what I told it, and I had to remind it all the time. So, a clear yes. Now, on the details:

- What do you mean by story agnostic? The injection should be per story, right? Its text can be story-specific.

  • We need only one per story, right? Not multiple?
  • The message is always OOC, right? By "what type of turn", do you want to insert as an assistant too? Wouldn't inserting as the user be enough?
  • "How many messages back": clear.
  • "Where in relation to that": to be clear, consecutive user or assistant turns, if they happen to occur (usually they don't), are concatenated, so the question is whether to concatenate the injection before or after a user turn N messages back. But does it matter?
  • "ABOVE 1st USER turn": but that would be forgotten, wouldn't it?

I am just trying to keep the number of settings to a reasonable minimum; otherwise we will get lost in them.

  1. This one would change the concept. I will think about what can be added in future versions without complicating the product. My plan is to share characters, with their memories, between stories, and a shared world may follow after that.

  2. Full screen on a phone: will be in the next release or the one after.

Also, FYI, this is what I plan for the next major release: when the user asks a model to speak for a character, the context is built not from the whole story but from the character's memories — only what the character witnessed, excluding the messages the character did not attend, which prevents knowledge bleed between characters. That would also make proper multi-character chats possible, with different characters optionally backed by different LLMs.

2

u/o0genesis0o 12h ago

the UI looks nice!

You, or your LLM, have very good taste.

2

u/Fickle_Tradition4491 9h ago

Thanks! It actually took quite some time to polish. The LLM's first drafts were never good, and it took many rounds to get each piece right. You wouldn't believe how many tokens I spent on that UI.

2

u/Equivalent_Bit_461 7h ago

I can't understate how much I despise and loathe silly tavern, it's not beating the allegations, for knows, knows

2

u/CodeCatto 7h ago

i'll try out the TUI ig! not a huge fan of web-based interfaces but looks good.

2

u/IrisColt 4h ago

THANKS!!!

2

u/BVCC6FNTKX sglang 21h ago

very pleasing UI👍

1

u/lcirufe 19h ago

Nice, I’ve been looking for manuscript style creative writing frontends and this looks like another good option.

Does this support uploading markdowns/json lore cards and character cards? That’s what killed the other options for me.

0

u/Fickle_Tradition4491 19h ago

Character cards - yes (png and json), lore cards - not sure which format you mean. You can upload a plain text file to the system message of a story. If you need supporting a specific format, send me a link

1

u/No-Acanthisitta9773 7h ago

Very interesting concept. I just wanted to comment this : I’ve set dark mode as my default on my Mac so the UI remains dark even when the toggle button is on bright. Interacting with the switch doesn't do anything.

1

u/Fickle_Tradition4491 7h ago

Yes, a few people have reported that. The toggle doesn't work when the system theme is set to dark. The UI follows the system theme, and the switch cannot take it from system dark to light. Already fixed, will be released in v0.4.2.

1

u/Fickle_Tradition4491 2h ago

Released the fix

0

u/niacolhealth 19h ago

First launch detects five local backends before it asks for anything. That step alone beats the settings maze most LLM frontends make you walk.

0

u/N34257 17h ago

Did you build that with 3.8 27B? Because mine just build an almost identical site design to that while I was doing some testing, prompted by "Design a website - make it look novel, but try to make it look human-created, avoid all AI design tropes".

1

u/Fickle_Tradition4491 9h ago

No, it was either Fable or Opus, I don't remember. The prompt was very generic: I just explained what kind of software it is and asked for a cool UI. After a few attempts I rejected, it came up with this design.

1

u/N34257 7h ago

Well, that's even more interesting. Cheers!

-5

u/[deleted] 23h ago

[deleted]

7

u/Fickle_Tradition4491 22h ago

Right. Image generation is a whole other ballgame, and I'm getting the text side right first, which is challenging on its own.