[ANN] Tachikoma.jl — A terminal UI framework for Julia

I’ll give it a try and report.

By the way, as of today, VS Code’s integrated terminal now supports Kitty Graphics Protocol.

1 Like

Oh cool, then VSCode could be another good option for those who want to do things with the gfx capabilities.Yes please let me know about your experiences, I’ve seen this work on Windows, all the demos were basically functioning on Windows terminal. Detecting resizing might be something that needs fixing.

It is working perfectly! Beautiful package, congratulations!

6 Likes

Thank you! I want to exercise this a bit more and will be putting out a new release soon which contains these enhancements.

5 Likes

Great package, very functional!

I just added a skill for it to julia-agent-skills: Add Tachikoma skill by langestefan · Pull Request #7 · JuliaGenAI/julia-agent-skills · GitHub

I tested it out with a demo terminal app, and it seems to work pretty great. Let me know if you have any comments.

1 Like

@langestefan , thank you! I like the idea of that, I’d love to get Kaimon.jl more into the skills world too, if you have any ideas on it let me know.

I’d also really love it if there was a good way to keep the skill documentation up to date. If I make any adjustments to the API, it seems like the skill would get out of sync with those. Are there are good methods you’re aware of to do this?

All the docs and rendered images are being built from the source code, so it seems like there could be some sort of automated method to update the skills as well… Can skills pull from a url for their documentation dynamically, or does it need to be directly in a committed file in git?

What did your test app end up doing, by the way?

I don’t have a good solution for this yet. But I suspect that for incremental package updates it may be enough to add breaking changes to the context. Or some mechanic that can retrieve them when needed. That way the skill does not have to change, but the agent is aware of changes to the API. Of course this doesn’t work if you release a v2 with a completely new API.

Skills are just text files. They provide context to the agent, they are not functional on their own in any way. See also: Agent Skills - Claude API Docs

I’m building a little terminal UI app for managing Julia projects with Pkg

Profiling:

15 Likes

Awesome, this looks really great!

Thanks for sharing, it’s actually the first TUI built with Tachi that I’ve seen “in the wild”. It makes me happy to see you using Tachi productively so early after release, creating new tools which already look so good.

I’d love to have an interface like this for understanding my Julia package structure and how things look across projects. Let us know if/when it gets to the point where you’d like to share it with the rest of us.

7 Likes

Amazing package, I will hopefully have an official announcement sometime later this week or early next week but this is enabling a super fun rebuild of Pluto.jl specifically for the terminal!


21 Likes

Wow … just wow! That sounds so cool and I want to try it!

1 Like

Still has lots of bugs. But here is a small video:

15 Likes

@langestefan, don’t worry about the bugs. It’s still very fresh, but the concept is really cool. I could see a lot of people gravitating towards something like this to understand their package environments through a quick and comprehensive interface like this. I’m one of them!

The disk usage and loading time stats are a great idea as well. You don’t get that out of the box and there have certainly been a few times when I’ve needed to clear up some space and wondered where I might find some in my Julia package depot.

2 Likes

I have an early version that you can try out here: GitHub - langestefan/PkgTUI.jl: Terminal UI application for managing Julia projects with Pkg. · GitHub

As kind of a side-quest I came up with a way to visualize compat range conflicts:

18 Likes

Just pulled it and tested it out, worked great for me. Curious if you tried the automatic gif recording build into Tachi? I used it to capture this:

PgkTui

4 Likes

Didn’t try gif export yet. I exported to svg, but that had display/tearing issues on firefox.

The SVG output will use whatever font the browser chooses unless you specify it and the main way I’ve made this look right is to bundle a monospaced font into the SVG. The GIF output needs a couple optional package which I’ve made work as an extension so they aren’t required as hard dependencies. But if you have FreeTypeAbstraction and ColorTypes it should work.

Then something like this should work

  using FreeTypeAbstraction, ColorTypes
  cols, rows, cells, timestamps, pixels = Tachikoma.load_tach("/path/to/file.tach")
  Tachikoma.export_gif_from_snapshots("/path/to/output.gif", cols, rows, cells, timestamps;
      font_path="/path/to/ttf_or_ttc_font")

or for SVG:

  Tachikoma.export_svg("/path/to/output.svg", cols, rows, cells, timestamps;
      font_path="/path/to/ttf_or_ttc_font", cell_w=8, cell_h=16)
1 Like

That’s a super useful app you built there. Great how easy it is to switch environments. :flexed_biceps:t2::folded_hands:t2:

1 Like

Yeah, props to @langestefan for building this. This is exactly what I want Tachi to enable: the ability to create convenient and powerful TUIs, so you don’t have to weigh choices about whether or not to build a more full featured interface for your (or someone else’s) Julia package. The lift is small enough that the answer is just, “Yes.”

On that note, connect your project to Kaimon, Kaimon to your agent, and tell it to build a TUI for you. Seems to work pretty well.

4 Likes

Added another function for something I often struggle with, setting compat ranges by hand:

I will stop hijacking this thread now, just wanted to showcase how cool Tachikoma.jl is :slight_smile:

12 Likes

:laughing: No problems at all, I appreciate you showing your work on this, thank you!

1 Like