Hacker News new | past | comments | ask | show | jobs | submit login
Launch HN: Raycast (YC W20) – CLI-inspired desktop app for non-coding tasks
160 points by thomaspaulmann on March 2, 2020 | hide | past | favorite | 76 comments
Hey,

Thomas and Petr here from Raycast (https://www.raycast.com). We are building a command-line inspired native app to save developers time on non-coding tasks, such as managing active sprints in Jira, sorting out notifications in GitHub, or checking metrics in Amplitude.

Both of us are software engineers and we noticed that we were spending less time coding and more time managing the software development process. We had to keep track of bug reports, manage sprints, comment on pull requests, release new versions and many more things that eat up a big portion of our time. All of those tasks are spread across web tools that aren't optimized for power users. When we used these tools every day, loading times became annoying, animations turned into pain and clicking 10 buttons for the simplest things didn't feel right.

We built an internal productivity tool that addresses this issues in our previous jobs at Facebook as a side project. It was a desktop app for macOS that sits in the menu bar and connects to the internal issue tracker. The app displays your open issues and has a global shortcut to create a new one. The tool allowed us to replace the slow web app for the majority of our work and saved us time. When other engineers enjoyed the simplicity and speed of the tool, we realized that such an app can be applied to other web tools as well.

Everybody has to deal with one of these. Take Jira, for example: to update the status of an issue, you have to open the browser, create a new tab, navigate to the website and find the right issue. Only then can you change the priority. This feels broken! This kind of interaction shouldn't take that long. In fact, you should be able to do this without opening a browser, without seeing a loading indicator and without switching context!

Raycast is inspired by command line interfaces. These interfaces are a great way to escape from the clutter of typical web tools. They are simple, responsive and extensible. However, they also have drawbacks: rich media elements aren't well supported, ASCII characters are too limiting for advanced UI design and it's very hard to discover commands. Raycast is our attempt to combine the benefits of a command line with those of a modern user interface. Its UI is similar to Spotlight or Alfred. You can launch the app with a global shortcut, search for commands, and perform quick actions. Similar to CLIs, you execute application-specific commands in Raycast, such as creating an issue in Jira or opening a pull request in GitHub. An integrated store makes it easy to install new extensions.

The app is entirely designed to keep developers in the flow. Most important: it's fast! Our client-first architecture makes every interaction instant. The app is written natively to deliver the best performance with the least amount of resources. It won't drain your laptop battery and it's accessible via keyboard shortcuts.

Consistency is key to being more productive. Once you've learned how to create an issue in Jira via Raycast, you know how to schedule a meeting in Zoom, create a pull request in GitHub, or set a reminder for tomorrow. All commands follow a similar structure and share UI components to make them look and feel the same. The components are built for speed: Text fields have autocompletions, elements in dropdowns are searchable and automatically remember previous choices. The app doesn't require a login and your data is stored encrypted on your local hard drive. All the API requests go directly to the third party services and we don't track any sensitive data.

At the moment, Raycast is only available for macOS and we're focusing on the fastest experience for Jira. Upcoming extensions will include an inbox for your GitHub notifications or utilities such as reminders. We can't build all extensions ourselves and believe in an open platform. We will release an API to build custom extensions and use the private beta to make sure that we can provide a great developer experience. We have tons of ideas and would love to hear what would you like to see in a tool like this.




Did you consider writing this as a CLI tool and using amazing auto-completion to give you discoverability and an advanced UI? I love the idea of having a tool that brings these systems together but would rather keep my focus on the command line since that's where I'm spending the majority of my time.

  raycast ticket create "Run database migration in production"
  raycast ticket<tab>
    create claim set_owner close
  raycast ticket set_owner p<tab>
I've written a tool that uses a plugin system to easily add more "commands" to be run. I haven't tackled the tab completion piece yet, but I can imagine that it would significantly benefit the user experience.


Good idea! That is definitely something we want to explore in the future (giving a CLI for Raycast integrations on top of main app functionality), especially if people will be asking for this.


that will be cool. please do!


If this was accessible for Voice Over (the MacOS screen reader), blind developers would literally bless you for this. Half of those non-coding, web-based tools have huge accessibility problems, and an efficient and ergonomic interface would be a godsend. I can't test the accessibility aspect myself, now, as I don't own a Mac and I don't work in a team environment, but I can get you in touch with some people if you're interested. The fact that you're doing native and that you're focused on the keyboard means there's much hope, though.


Great idea and as you mentioned, this should be possible with our native implementation. I'm not too familiar with the accessibility features provided by Apple. Feel free to send me an email (thomas@raycast.app). We're curious to explore this and help other developers as much as we can.


I like the idea. My feedback: the name seems like it's going to confuse people. I almost skipped by this post when I saw the name at a glance because I'm not particularly interested in 3D graphics.


> the name seems like it's going to confuse people.

Agreed! This name is poorly chosen. Most people have a general familiarity with what raycasting is about and will likely be confused by this usage.


Thanks for the feedback. Yeah, it crossed our mind that some people familiar with 3D graphics term might get confused. I really hope that there are not too many people in our target audience familiar with it, though I might be wrong :)


If you're targeting developers then I suspect you'll find many of them have at least heard of the term raycasting from CS degrees at the least.


Fair enough! Hopefully it will not become a problem. In the end, it's just the name and we want to be defined by the product and its value rather than by the name itself.

As to why exactly we picked it: as ray casting is a way to instantly query information about closest objects, we thought it would be a good metaphor for instantly querying and accessing different third party services. Rays represent speed and focus.


Maybe it's because I'm a Windows user so I'm not your target audience Mac user, but my IDE already does all of this.

From my IDE , I can already interact with GitHub, JIRA, search stack-overflow, and pretty much anything else either natively or through the plugin system.


Fair point and I absolutely agree, VSCode has some great integrations with other services and in fact solves similar problem of context switching. However there are quite a lot of people that don't use VSCode, not to mention you're not always in your IDE when you need to perform these tasks. Having said that we want to explore some ideas where we integrate deeper with IDEs like VSCode and provide commands based on the context (e.g. provide documentation search based on the coding language, suggest filing a task for TODO comments, etc).


Same. Vscode has plugins for everything I need - slackoverflow, jira, github, stack, runner, and just about anything popular.

eg - https://marketplace.visualstudio.com/items?itemName=Atlassia...


I want something like this, which is why I more or less have the skeleton and something that at least approaches this idea, built organically through time using various utilities. Rofi, some shell scripts, etc.

This is a great idea in theory but much harder to do properly in practice. The idea is only really worthwhile as long as you can really extend it to a lot of things(no one cares about adding an Nth tool that can do GitHub and jira and one more thing).. and that's where this is going to go wrong.

There are reasons the interfaces to many tools that we use are as complicated as they are - it's needed to use the tool to its full effect. In order to achieve the same effect in this tool, you are doomed to constantly reimplement literally the entire interfaces of all the interesting services, just as CLI interfaces.. and that's just not gonna scale.

I'm not into all this YC stuff, but does the YC20 in the title means that someone has funded this idea?


> does the YC20 in the title means that someone has funded this idea

Not only that, but the Launch HN title means that it's a promoted post [1]. Launch HNs are one of three formal things [2] that HN gives back to YC in exchange for funding it.

[1] https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...

[2] The others are job ads for YC startups and displaying YC founder names in orange to other YC founders.


> I want something like this

It's existed for almost 40 years, and it's called emacs. If anyone questions emacs's ability to display incredibly useful UIs, try using magit[0]. Emacs sucks though, so I hope this comes out better!

[0] https://magit.vc/


Also the Raskins', Jef and his son Aza, were onto this a long time ago. The general idea is applications, desktop or web, are the problem and that a better interface is one that provides a ubiquitous means of issuing commands with natural language.

About 10 years ago or so Aza created Enso which ran on the desktop and then Ubiquity which ran in the browser. These were both steps in this direction. I looked at going further with the idea but quickly ran into the question of how best to implement with currently available desktop technologies. But a lot of folks have been nibbling at the edges of this problem for a long time and they end up using rofi or dmenu or emacs and a bunch of custom scripts.

In my opinion one really needs to design a brand new shell from the ground up. But when I say shell I mean OS, not terminal.


I totally agree with you that scalability is an huge point and that we need to tackle it. Two things:

1. We won't build all the integrations ourselves. There are just too many individual things. We'll provide an API that developers can use to cover their custom workflows. 2. Raycast doesn't replace your other tools. It makes the common interactions with them simple and fast. We believe that it shouldn't take plenty of clicks to create issues in Jira or update any statuses and that there is an huge opportunity to streamline this tasks. Think about it as a companion app for your web apps.

And to your last point: Yes, we got funded by YC.


Alright -- I wish you the best of luck, though I'm skeptical that you guys can sell this to businesses. Mostly because as I've gained experience working in the industry, it hasn't been my experience that corporations are willing to pay for something that can only give nebulous promises about increasing employee productivity. Doubly so if it's some kind of developer(or power user)-oriented tool whose benefit might be hard to explain to the average joe.

But I hope I'm wrong, since I would really love this. I use rofi + some custom shell scripts to achieve a similar interface in some ways, but as I imagine you know very well by now, going from something like that, to something that integrates with jira(or whatever) is not just a couple of steps.


Counterpoint: my fairly large employer pays site licenses for Omnifocus, 1Password, and other productivity apps.


> I'm not into all this YC stuff, but does the YC20 in the title means that someone has funded this idea?

Yes, Y Combinator (ycombinator.com) is a top startup accelerator (and the owner of the site you are currently on).

They fund batches of 150+ startups twice a year. W20 means they were in the first batch of this year.


> does the YC20 in the title means that someone has funded this idea?

It just means they are part of the Winter 2020 batch (the most recent one).

You are right about the interface getting really complicated if every feature is to be implemented. But, assuming the 80/20 rule is in effect - Most of the time we would only be using a few features. As long as they identify those features and only implement them well, this tool will have great value.

Anyone who has to use Jira on a daily basis will definitely want to try this out!


I couldn't say it better :-)


So like https://getcommande.com/ but focused on devs?

I expect to see more trends of the spotlight/alred/vscode command+p UX being used for different verticals.

Pretty meh on this use case, however, as devs are very difficult to sell to. I guess that's why you're focused on Jira and selling to enterprise.


Yes, Command E has a similar UX. Actually, we started with Jira because many devs that we interviewed mentioned it as a big pain point. It's slow and confusing but you still have to use it to keep your team up-to-date. As to enterprises, we focus on individuals first but see value for such a tool in a team setup.


Shameless self promotion but if Python is your thing and the terminal is your favorite place then have a look at https://smetj.net/termfunk_bridging_the_gap_between_python_a...


I wish you would just let us download it instead of getting added to some early access list. I'm probably going to forget about this by the time you let me download it...


We want to open it up as soon as possible. The main reason behind the private beta is that integrations such as Jira are fairly complex due to different setups and a lot of customisation so currently we're in the process of "onboard new company -> fix bugs -> try again" and so on. It's getting better on each iteration and as soon it reaches certain level of stability on the integrations side, we're going too open it up to everyone.


How is this different from workflows in Alfred?


Our main differentiator from Alfred is provide much deeper and richer integrations with other services. One of the goals for Raycast is to keep you away from browser that can distract you from work. Also we have a lot of plans for team features that Alfred lacks of. And yeah, there's certainly going to be an overlap :)


I don't know what's being used to build the user interfaces, but I'd look at Shopify Polaris for some inspiration. It's been a pleasure to work with it. Although it's quite restrictive (no colour customizations, for ex), it gives users standardised and accessible screens. I wonder how debugging would work.


Nice, consistent design system and guidance is definitely something we want to have for the future platform. Thanks for pointing out to Shopify Polaris, looks very interesting!


Side question. If you wrote it as a side-project while at Facebook, doesn’t that work belong to them? How did you launch a business on this idea, did you strike an agreement with them or are you taking the do-first-ask-permission-later approach?


It was a different tool and tight to the internal issue tracking system that Facebook is using. We realized there is value in having a tool that simplifies the interaction with overloaded web apps and it's crucial to cover many of them. Obviously, we didn't share any code and built Raycast after we left.


Probably you mean you didn’t write any code or notes on the idea until after you left, so there was no copyrightable IP that you were under contract to share while you were employed? But I get the idea. Thanks that’s helpful.


I'm fairly confident one can write an Alfred plug-in for most of these tasks.


Yeah, my idea was something with the interface of a launcher but where the results are display as a tree list. The result of a very large set of commands would either be a tree list or the rendering of some other GUI element in which case the tree list results would be empty. In turn, the elements of the tree list could be easily selected and another command could be run on them. This is very similar to something like gnus in emacs only with a modern UI.


Yep.. I don't need another launcher


Thanks , Looks like Firefox ubiquity function . It was great while it existed.


This sounds similar to another tool called Linear [0], as described in this TechCrunch article [1].

Though it seems that they're only primarily focused on work issue tracking (GitHub, Figma, etc.).

[0] https://linear.app/

[1] https://techcrunch.com/2019/11/21/linear-lines-up-4-2m-led-b...


Yeah, Linear is a great tool and has an amazing UX, though as you correctly noticed they are building standalone issue tracking tool while we're building an app that sits on top of other web apps allowing you to use them without going to a browser.


1. What are your plans for monetization. I hate start using and getting used to something and then monetization or tracking spoils things.

2. Is the app a native Macos App or some react-native/electron wrapper?


1. We will keep a free tier, some kind of pro version and mainly monetizing features for teams/organizations. We're fully committed on privacy! 2. The app is 100% written in Swift for macOS.


The text rewriting on top of the page is incredibly annoying. It's too much text always changing and it doesn't really give any value.

Product looks interesting though!


That's good feedback, we might consider simpler ways to show different possible use cases.


I hope you guys succeed.

It’s aggravating having to stop and use my mouse all the time.

Feels like I’m constantly stuck in traffic while coding.


> Feels like I’m constantly stuck in traffic while coding.

Nice metaphor!


Seems interesting, although I fail to see any command line inspiration in the cast or screenshots. It looks like a perfectly normal GUI with keyboard shortcuts and a text filter for narrowing down on some activity?


Looks interesting, excited to see where it goes.

It feels to me like something a motivated open source project could do well, too. What's the thing that will get people to pay for this? Slick team/enterprise features?


As you correctly guessed, we're planning to provide features that would be useful to teams and larger organizations. Shared commands, integrations with custom internal tools, shared instant knowledge base and so on.


Yea its about that time again: someone is rewriting Emacs. Happens every few years or so. Not hating, just saying. Maybe one of these decades it may actually be better than the real thing.


Love the concept & the idea! But why did go for MacOS / Swift instead of something cross-platform, such as Electron or Qt? Many devs outside of SV aren't using Macs.


Applications like these highly benefit from deep integration into the environment. Also, keeping them native and easy on resources makes them using a snap.

You want these to come and go quickly, at the whim of a fingertip. You want them to connect to your local search services, reuse local components, etc.

The biggest problem for most of these "Launchers", is that they try to be cross-platform, making them slow and a pain to use, as soon as you want more than just basic seek&run. I am still trying to find a suitable on Windows, that would make me as happy and satisfied as Quicksilver does on macOS.


Wox+Search Everything is my spotlight/alfred replacement for windows. Not on the same league, but the ux/ui at least does the job.

Also use SmallWindows for a Mission Control like interface.


Wox seems to have a clever way to do user plugins by just using a JSONRPC interface.


We wanted to build a lightweight and performant client that integrates deeply with the OS. We're planning to implement another native client for Windows later.


Is this integrated with the shell? Can I write shell scripts and python scripts to eg. grab today's entries from my gmail calendar, etc


Shameless self promotion but have a look at https://smetj.net/termfunk_bridging_the_gap_between_python_a...


Giving ability to build custom commands with underlying scripts is something that we're going to tackle very soon! Do you have any examples for what kind of things you would want to use it for?


Heads-up! Is the site down, seems to be loading forever for me. Want to check it out more, since it seems like I am the target market.


Hi! Thanks for the heads up, could you please check if the website loads for you now?


Looks great! How do I try it out?


Thanks! Sign up for the private beta and we'll send you the build as soon as possible. The main reason for "private beta" mode is to make sure that complex integrations such as Jira work for people. We're onboarding people everyday, catch some errors, patch them and so on.


Awesome landing page. Curious if you guys made it yourself or outsourced to an agency?


Thanks for the kind words! We've built it ourselves, and to be honest neither of us is a web developer or designer so we're happy that it came together in the end.


Do you support Jira Enterprise (I.e self hosted) and GitHub enterprise?


Not yet but more and more people asking about it.


Looks pretty cool too bad (or maybe, good) I don't use Jira.


Which integrations you would be interested in?

We're going to be adding more integrations in the future, such as GitHub, GitLab, Slack, GSuite and so on, stay tuned.


GitHub would be cool. I also use Slack and Clubhouse.


We have a lightweight extension for GitHub and more will come. What would you like to do with an extension for GitHub? Plan projects? Search code? Manage packages?


1. Open repos. I have a lot of them. 2. Search code. 3. Open PRs that I need to review. 4. Create issues / Open issues that are assigned to me. 5. Search repos / starred repos


We cover already some cases of your named ones, such as the create issues and list your assigned ones but aren’t quite there yet for others. Seems like these are the common ones and we’ll take a deeper look into them.


Isn't any open source solution available for this already?


How mod-able is it?


We have plans to provide API for building custom integrations as soon as we're ready to settle down with the framework. At the moment there's still a lot of experimentation so we're building all integrations ourselves.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: