You can clone with
HTTPS or Subversion.
(Started from discussions in #344)
Have a cool idea for an agent that you want to see implemented?
Want to work on one of the agents on the list?
(Note: This list should be maintained in alphabetical order, ticked items mean in progress/actively being worked on, ticked items should be moved to 'in progress' list)
@cantino / @dsander I can see this checklist getting pretty long/unruly pretty quickly, and perhaps management a bit painful. Do you think an official Huginn Agent Suggestion Trello board might be a good idea? (would have a similar setup to above, can still reference GitHub issues, and should be a bit cleaner/easier to manage)
Various agents I'd be interested in contributing to (have existing ruby doing parts of this, which might only need UI/adapting)
Much bigger integrations/possibilities:
These all sound very interesting @CloCkWeRX, we'd love to have your involvement!
@CloCkWeRX Definitely a fan of Trello (#346 related), and Xero could be interesting too (does that mean you're an aussie too (Canberra based myself), or do they do international stuff?)
Am an Aussie (SA based). I have a few days free, so I'll spend a bit getting my local dev env happy. I'll probably focus on the xero part first - what I've got works with the payroll API for who's taking leave; though there's plenty of other bits and pieces that are interesting if you a small/medium business (invoice raised, payment made events?).
I've done a little with Xero through work. There are 3 auth methods for the API: private (public/private key), public (Oauth, key only valid for 30mins) and partner (Oauth, key doesn't expire)
The most useful one for something like Huginn is obviously partner, but there are a bunch of hoops and stuff to jump through to get that one as I understand it.
Will definitely be interested to see what you come up with!
So, https://github.com/Shopify/dashing/wiki/Additional-Widgets are pretty much pre-made and trivial to refactor.
Here for example is a nikeplus agent (untested) - https://github.com/CloCkWeRX/huginn/tree/nikeplus_agent
Available, licensing etc dependent:
Name Description Author
App Store Rating and Votes Get the average rating and total votes of your iOS App Stefano Bortolotti
Asana Tasks Today's tasks in Asana Will Johnson
Atlassian Jira Agile: Remaining Sprint Days Displays the remaining days for the active sprint for a given scrum board Christian Galsterer
Atlassian Jira: Number of issues in a Jira filter query Displays the number of issues in any filter query. Supports multiple filters and widgets in a single dashboard. Christian Galsterer
Atlassian JIRA Open Issues Displays number of open issues currently in JIRA for a given project ahanmal
Badge Overflow: Unearned Badges Calculates progress towards unearned Stack Overflow badges Adam & Stephanie Sharp
Bacula widget Displays the bacula state of your backup environment visibilityspots
B-Cycle Bikes Available Get bikes and docks available for B-cycle (bike sharing service) Stephen
Badge Overflow: User Profile Displays Stack Overflow profile info, including reputation and number of awarded badges Adam & Stephanie Sharp
Bamboo Plan Status Atlassian Bamboo plan build status Gavin Bunney
Betaseries tv-shows airing next retrieved from betaseries Antoine Brisseau
Big Image Scale an image to fit in the widget Benbria
Bitbucket User Followers Users followers from Bitbucket jeroenbegyn
Broadsoft Queue Count Call center Queue calls waiting Alsoongit
Camera Widget Displays and updates static jpeg images from IP security cameras Jake Champlin
Capital Bikeshare Get bikes and docks available for Capital Bikeshare (Cabi) Derrick Bryant
CircleCI Circle CI Project Build Status Pete Hamilton
CircleCI (List) Circle CI Project Build Statuses Pete Hamilton
CircleCI: Forecast Circle CI Project Status Forecast Chavez
Cloudability Cloudability monthly spend Colby Aley
Code Climate Code Climate GPA dgehrett
Code Climate Code Climate widget Rafael Carvalho
Code Ship Code Ship widget Rafael Carvalho
Coderwall Rank Show your team's Coderwall rank mathias
Countdown Countdown widget Ruleb
Daily Dilbert Daily Dilbert strip retrieved from http://www.dilbert.com/fast Brunas
Desk.com Case Count Get the number of cases in your Desk.com account, using their API Runar
Disqus Display Comment Count from Disqus SeanJA
EC2 CloudWatch CloudWatch stats in Dashing Benbria
Errbit Displays the unresolved errors from the projects you've specified on your Errbit server kevintuhumury
FB link stats Details of facebook link shares Gregology
FB page stats Details of facebook page stats ephigenia
Fikket participants Amount of participants for a Fikket event joren
Fitbit Displays your steps, calories, distance, battery level and more from Fitbit.com kevintuhumury
Forecast.io Weather Displays weather from forecast.io mjamieson
Forecast.io w/ Climacons Displays extensive weather information from forecast.io with Climacons ysim
Forecast.io w/ Skycons Displays weather from forecast.io with Skycons toddq
Foursquare Widget Checkins with images for a Foursquare venue parthibanloganathan
Foursquare chekins widget Simple display of total # checked in people at a venue visibilityspots
Foursquare Venue Checkins Checkins on a foursquare venue ephigenia
Freshdesk Dash Display a short list of Freshdesk users with the most tickets assigned. Kent Dahl
FridayBeer Show your need for a friday-afternoon beer mr-deamon
FullPie chart Show awesome pie charts with ease mattia72
GitHub Next Milestone Show next GitHub Milestone and due date Benbria
GitHub Next Milestone (multiple projects) Show next GitHub Milestone and due date for multiple projects Jurre
GitHub Organization News Feed Display your organization's activities and events kimh
GitHub OctoStatus Pulling out all the stop(light)s while displaying the current GitHub status David Campbell
GitHub Repositories List User or Organisation Repositories Watchers/Forks ephigenia
GitHub Repository Stats Various stats for a given repository cmaujean, erikh
GitHub Status Displays the current status of GitHub Iain Mitchell/Ben Flowers
GitHub User Info User Info from GitHub ephigenia
Gitlab issues and bugs Gitlab issues and bugs widget per project. joren
Gitlab repo + issue open Gitlab acces via API show a list of project and issues opened Fiyorden
Google Calendar Google Calendar events widget with custom calendar colors designoid
Google Calendar Attendees Google Calendar event attendees widget blackjid @ platanus
Google Maps Google Map widget with custom colors andmcgregor
Google Play Market Google Play Market application score and voter count ephigenia
Google Play Advanced Google Play market statistics with advanced list support designoid
Graphite Graphs Displays Graphite graph images and auto-resizes and refreshes them josno
Havag Info Displays departure times of trams and buses in Halle (Saale), Germany Terminal.21
Heroku Dynos Displays number of active Heroku dynos robotmay
Heroku Status Shows Heroku status bhankus
Honeybadger Errors Displays top Honeybadger errors bhankus
Hotness Changes the widget's colour depending on the value displayed DashboardDude
Instagram by Location Displays Instagram Photos based on location mjamieson
Instagram User Info Instagram User’s info: followers, following, photos ephigenia
Jenkins Build Displays Jenkins build progress steintore, mavimo
Jenkins Last Commit Displays information about last SCM commit for a Jenkins job kalenwatermeyer
KACE K1000 Ticket Counter Shows open ticket count for the KACE K1000 service desk Paul Liu
Klout Score Klout Score ephigenia
KVB next trains Show the next KVB Trains from a station next to you bascht
LastFM Display the most recently played or currently playing track Craig Coles
Librato Metrics Create a graph based on metrics reported by Librato Matt Towers
Load Averages Load Averages for *nix servers Gregology
Loggly Graph log data from loggly Ben Flowers
Mandrill Mail Mail stats from Mandrill dgehrett
MixPanel Event Total Display total number of events from MixPanel Ilya Katz
MyWind Displays information about your Italian Wind mobile contract (SMS, voice minutes, data, ...) Simone Busoli
Nagios Nagios warning and error counts Alexander Else
Nest Nest thermostat data Eric Gonzalez
Newrelic Newrelic metrics assimovt
News Displays the latest BBC News top stories Iain Mitchell
New York Subway Displays the New York subway status from the MTA John Barker
Nike+ Displays data of your last Nike+ activity danillotuhumury
Ntile Takes any timestamped data feed and displays the value for the current day (or defined time period) in statistical context. PareidoliaX
Opsview Displays Opsview Criticals, Warnings, Hosts Up/Down hawk554
OC Transpo Display arrival times for OC Transpo Buses Benbria
PagerDuty Show PagerDuty incidents and on-call information thegreenrobot
PageViews Display the Pageviews From GA SeanJA
Pianobar Display song information from Pianobar, a Pandora client Kyle Johnson
Pie chart Show awesome pie charts with ease stevenleeg
Pingdom Displays a list of Pingdom statuses james
Pingdom bundle Bundle of Pingdom widgets including status and uptime Rafael Carvalho
Pingdom Uptime Displays the mean of all or part uptime probes pydubreucq
Pivotal Tracker Pivotal Tracker Story Statuses dirkkelly
Pivotal Tracker Burndown Pivotal Tracker current iteration's burndown gaelrottier
Pivotal Tracker Iteration Pivotal Tracker Iteration Stats marcus
PuppetDB Stats PuppetDB Stats bitflingr
RandomAww Display a random cute picture chelsea
Reddit Display top 5 posts/score/comment count per subreddit(s) of your choosing kevinquillen
Reload Periodically reload the dashboard to get around JS memory hogging Alexander Else
Remember The Milk Display your overdue tasks (or configure it to do something else) kevintuhumury
Remember The Milk A clone of the widget from kevintuhumury using icalendar instead of milkman to access the tasks luzifer
Remote Reload Reload your dashboard when you make changes Benbria
Rickshaw Graph Drop-in replacement for the built in Graph widget Benbria
RSS Feeds Display multiple RSS news feeds. toddq
Semaphore CI Display build status of project on Semaphore CI rastasheep
Sensu Display Sensu alerts Matthew Richardson
Server Density Display current server density alerts johnwards
Server Status Display status of servers Will Johnson
Server Status Squares Display status of servers using squares Welsh
Sidekiq Display stats for a Sidekiq Background system pallan
SirPortly tickets Show open tickets for a SirPortly department joren
Slideshare User Info Slideshare User Info (Followers, Number of Slides) ephigenia
SNMP Interface Bandwidth Display bandwidth utilization over time RAdzima
Sonar Display Sonar metrics EHadoux
Sonar Secured Display and configure Sonar metrics for a secured or unsecured Sonar repository. Aaron Kaka
Soundcloud Listens Display Soundcloud listens. pezholio
Squeezebox Now Playing Display currently playing song of a Squeezebox player. tobru
Startup quote Daily wisdom about startups assimovt
Stash Pull Requests Display open pull requests for projects or specific repositories from Stash warmfusion
Subway Info Subway information like train arrival time, station, etc. for New York and other cities. parthibanloganathan
TeamCity Display TeamCity CI build status Jurre Stender
TFL London Underground Status London Underground Tube Status Khash Sajadi
Thruk nagios status Nagios status with thruk front end Nicolas Leclercq
Time Since Last Tracks time past since the last occurrence of an event hannesfostie
Traffic from TomTom Ranks drivings times of routes using dynamic traffic data sighmin
Travis CI Display Travis CI build status Zendesk
Trello Display Trello boards info mordonez
Twitch.TV Add Twitch Stream to Dashboard magicguitarist
Twitter Search Twitter Search with v1.1 API jeroenbegyn
Twitter User Info Twitter Followers/Following/Tweet Count ephigenia
Vimeo User Info Vimeo User contacts, albums, likes etc. ephigenia
Vimeo User Videos List Vimeo user’s videos by likes, comments or sum ephigenia
Visitor Count Google Analytics visitor count (OAuth2) Matt Towers
Visitor Count (multiple sites) Google Analytics visitor count (OAuth2) fork to support multiple sites Will Johnson
Visitor Count Real Time Google Analytics visitor count (OAuth2) fork to support real time Robert Boloc
Weather Displays weather info from Yahoo David Underwood
World Clock Displays the time in another time zone Steve Klise
World Cup Brazil 2014 Displays the next matches for the Brazil 2014 World Cup blackjid @ platanus
World Clock Displays time at multiple locations Wei Lu
Yahoo Stock Quote Yahoo Stock Quote ephigenia
Yahoo Weather Displays weather information using Climacons. danillotuhumury
Youtube Video Stats Youtube Video Stats ephigenia
Zabbix Trigger Show number of zabbix triggers chojayr
The widgets feel like they have a lot of moving pieces. Huginn Agents have one, or sometimes two, files, plus a spec. If we're going to bundle lots of assets, I wonder if we should extract Agents into gems first.
I definitely like the idea of using dashing for our dashboard (why reinvent the wheel), and if we can make a nice interface from Huginn -> Dashboard widget, all the better!
I think there is merit to being able to potentially use the widgets, but I don't think it's a priority due to the complexity I feel it would add. And I definitely think that we should be looking at seperating our agents out into their own gems/whatever first, and/or the 'Huginn API' idea (since isn't dashing a nodejs thing?)
As an interim, either reimplement the dashing widget in Huginn if it makes sense, or create the concept of a Huginn -> Dashing shim agent (or reuse an existing agent for it, not sure of the specifics, but I assume Dashing can provide stuff in a consumable format like JSON?) That way we can get the benefits of integration without a huge level of complexity. Quick wins!
The way I see it, if we are running dashing, there is no reason you can't have the 'standard widgets' alongside 'Huginn widgets'.
I think an easy way to run Huginn and dashing side by side (default?) would be good, but also the ability to point to a seperated instance of Dashing if the user wants to. (ease, but also flexibility)
And I definitely think that we should be looking at seperating our agents out into their own gems/whatever first, and/or the 'Huginn API' idea
And I definitely think that we should be looking at seperating our agents out into their own gems/whatever first, and/or the 'Huginn API' idea
Yeah I agree there, I guess my main point was to examine a project like that to find the real world patterns/problems they have solved.
Interestingly, they rely on git repos or gists, not gems.
There's at least a structure similar to:
widgets/ # scss, coffeescript and other template type concerns
jobs/ # mix of wiring up the scheduler and the doing bit
lib/ # Supporting libraries
README.md # Usually pretty good documentation here
No specs by default.
The project itself contains a 'gist downloader' rather than relying on rubygems, something seen in projects like ninjablocks (copy/paste a gist url to add a new widget). I guess this lowers the bar for contribution/quick hacky agents.
Having played with some of the various plugins and thinking about how to seamlessly transition them to Dashing, it's a pain - the assumption of a global SCHEDULER means it's executing code the moment you load it.
I'd encourage us to adopt a similar structure, possibly even include a jobs/ folder with a default schedule and put our agents in lib/ as it's a bit neater.
(since isn't dashing a nodejs thing?)
(since isn't dashing a nodejs thing?)
Sinatra based, bunch of frontend JS to get data to widgets.
Ah. I remembered it wasn't rails at least! :p
Alrighty, have a Google calendar publish agent pretty much ready to go, need to get signoff re open sourcing it from 1-2 folks.
It's based on service accounts, not OAuth, which is a little more complex to setup than a 'grant permission X to system Y' UI flow; but a lot simpler from a development perspective - no callbacks, etc.
It should also introduce a helper library that makes it easy to make a GoogleCalendarReadAgent, and with the general service account approach + https://github.com/google/google-api-ruby-client enable a bunch of other agents (Drive, Tasks, Google+, etc)
Will @dsander's #324 branch help with this? Perhaps we can get that released soon, before I launch Scenarios.
New idea to add @alias1: Integration with Fara, for tracking packages.
I've yet to find a comparable service in terms of features, and certainly nothing on the open source side of things. Most delivery services require users to register their own API account. Fara covers 24 (?) or so different delivery services.
They don't have an open API at this time, but I have reached out to their team via email to see if they'd be interested in allowing us to develop a module for Huginn. Their terms only forbid "bots" for automated registrations, so it's possible that the module could do some rudimentary scraping/interfacing instead of using an official API without breaking their ToS.
Haven't looked into it much, and don't know where the 'ethical' line lies with Huginn, but #384 (comment) mentioned https://github.com/lad1337/XDM which sounds kind of cool.
On that same sort of notion, things like Yify API, SABnzb, Sick Beard, Headphones, etc
(Disclaimer: ..for monitoring, statistical analysis and/or making legal backups of your owned media with regards to all laws and regulations in your area, etc..)
Zendesk API (new ticket arrived, quick lookup the public transport timetable so you don't have to deal with it!) - just started tinkering on my local this morning.
Bittorrent Sync API
@imsoftware Bittorent Sync looks awesome! Hadn't seen it before.
How about a Jabber agent that can accept a limited repotoire of commands for the rest of the agent network? Here's my thinking:
Earlier this week I noticed that I hadn't received any alerts from my agents for a couple of days. I logged into my VM, restarted Huginn, and was suddenly caught up on everything that they'd done as the alerts piled in. I'm not sure if it was outbound e-mail that wasn't working or if the scheduler messed up, or what; that's another issue. Anyway, it would have been useful to send an XMPP message to a listening agent that would have caused it to ping the other agents in my Huginn instance for status updates ("ROBOTS, REPORT."), bundle them into an XMPP message, and send them to me. If no response had come back it would have been an early warning that something was amiss.
Such an agent could support a number of status report commands, such as listing agents, showing the number of events an agent (or all agents) have picked up, CPU and memory utilization, or things like that.
"Mailboxes know a lot. Use them.
Context.IO is a REST email API that makes it easy and fast
to integrate your users' email data in your application."
First 5000 mailboxes
Mailboxes 5001 and above
10¢ per mailbox per month
@virtadpt Sorry to hear that your agents stopped running. If you want to make an issue, maybe we can figure it out. I like the XMPP idea, but am not clear exactly how it'd work. Would it be agents consuming XMPP, or more of a side-band XMPP API?
@CloCkWeRX Zendesk API agents (or maybe just PostAgents?) would be super helpful.
Two fairly similar sites (both probably be achieved natively), but might be worth checking out. Basically data extraction/turning unstructured websites into API's.
@cantino I don't have logs from the time of the lockup, I'm running Huginn from inside of Screen. If it happens again, I'll open a ticket with the information I've got and we can work from there.
The agent would consume XMPP. i.e., connect to an XMPP server as a user and listen for stanzas from a particular JID. If any of the stanzas from the trusted JID contained one of a handful of commands it'd follow them ('status', 'stop', 'restart'), so that Huginn as a whole could be controlled in a limited fashion through a sideband connection.
An agent which can e-mail a short list of recipients. Here's my reasoning:
I'm building an agent scenario ("Shake, Rattle, and Roll") that periodically polls the USGS Earthquake Hazards API for detectable seismic events where I live. Sending e-mail and XMPP messages to myself is trivial with the existing agent roster but I'd like to be able to e-mail the members of my family at the same time without their having to create accounts on my Huginn instance and clone SR&R for themselves (because they don't use XMPP on their phones, unlike myself).
Hey @virtadpt, that's a good idea. Would a modification of the email agents to just optionally accept a list of emails work for you?
Adding in #408, @virtadpt.
both incoming and outgoing. the outgoing bit is easy. most/all cell providers have email gateways. so all that is needed is a dropdown for providers and a mapping of those to the gateways combined with the normal email agent. incoming will require a sms gateway of one's own and i'm not sure what is available there.
is anyone working on the bayesian agent yet? if so link to the code please?
@haxwithaxe There is a Twilio agent that can do SMS and phone.
@cantino Thank you!
A Dashboard made with dashing as an agent could be very useful.
Why dashing ? because it does not rely on third parties provider to support a nice dashboard.
There is also dashing-rails which is pretty the same thing but for rails (not sinatra).
i also just started to write the email gateway version and it's way more complicated to choose the right gateway than i expected :P http://www.ukrainecalling.com/email-to-text.aspx
i was hoping to avoid yet another cost per text but i don't think it's worth the hassle of writing a whole new agent for it.
@haxwithaxe Wow. If someone has a pre-made mapping of email-to-sms gateways, that'd be useful. Otherwise, I suppose you could volunteer to either build a JSON lookup webservice or a Ruby gem that provides a community-maintained mapping. ;)
-making- made a webscraper for the page :D but in python cause i'm new to ruby still. json or ruby output though.
Not sure if this is the best place to post this, but I put together an Android Tasker Profile to interact with the Huginn User Locations Agent here. You can set Tasker up to turn your GPS/location services on every 30 minutes or whatever, snag your location, and then send a POST to Huginn pretty easily. If there are any Android users in here that want to try, I put instructions on that repo. (Hopefully the instructions are clear enough, though.) You can even do cool things like telling it to NOT get your location under certain circumstances. For example, I have mine set to not activate when I'm connected to my home or work wi-fi.
I think there could be a lot of cool Tasker/Huginn interactions. An agent that would consume various pieces of data from your phone could be interesting, I think. (Tasker also has a pretty big community, and I think that a lot of them would like Huginn, as they are somewhat conceptually similar.)
On another note, has anybody considered a CSV export feature for events? Could be useful.
Awesome @naiyt! I think it'd be worth adding a page or link to the wiki about this, if you have time.
Support for Lift habit tracking
Another dashboardy type thing: http://numerousapp.com/
Sure, @cantino, I'll write something up for the wiki once I get some time.
By the way, do you guys know if somebody is working on the "Website status monitoring" listed in the ideas? If not, I might hack on that in a month or so, since it's something I would like.
@naiyt Thanks! I don't know if anyone is working it-- that'd be a nice addition!
How about adding xmlrpc format to the post agent.
Is there any kind of AgentAgent? Some kind of agent to make changes or control other agents' settings, IE schedule, parameters, enabled/disabled?
Thanks @cantino, I knew about that one but haven't looked at the issue in a couple weeks, it's much more robust than I originally thought!
An alternative to the Twilio agent could be one that connects to Textbelt (source). It exposes a simple API that then turns around and sends SMS messages via a multitude of provider's email-to-SMS gateways.
Added some agent ideas found in the #459 thread.
An agent that is specifically geared to catch error conditions emitted as events from other agents would be nice. It'd make debugging agents much easier because they wouldn't fail silently anymore (like WeatherAgent does). It would also make it possible to gracefully alert on error conditions; for example, I'd like to run them through an instance of JabberAgent to let me know that something went wrong. It would also make it possible to instantiate error handling agents multiple times, and associate them with different scenarios.
@virtadpt Making an Agent that consumes the AgentLogs of other Agents would probably be fairly straightforward, if you're interested in trying it.
Toggl.com for time tracking! :)
Price tracker for Amazon (uk es com...) like ( keppa, camelcamelcamel) with new and used prices. 3hours to check with keepa is too much sometimes with some products.
Given a URL, this agent downloads the file to a specified or default place on disk and returns the filename, file path and an MD5 of the file. The file can either be immediately deleted or it can be kept on disk.
Similarly: S3Agent for manipulating files within S3.
@knu any word on the AgentRunnerAgent? I'm trying to get a workflow to run another agent only on Sunset, that seems like the ideal way to do it
@snicker You mean you have an agent to emit an event for every sunset and sunrise, which you want to use as a trigger to enable and disable another agent, respectively? That'd be a cool use case. I'll put that on my task list.
I'd be interested in a Flickr agent, one that can fetch public photos (search by keyword, get latest from my contacts' photostreams, etc.), and my private photos through the API.
My use-case is wanting to send an email digest to family members when I post new pictures on there (most of the are family-private) and/or create Flickr "passes" to send the pictures to non-Flickr-using friends via email when I upload them.
I would be interested in Podio agent with similar functionnality as provided in Zapier.
I'm looking to use huginn as a local stand-in for IFTTT type of functionality. I just prefer to have it all on my own servers.
I already use node-red (http://nodered.org/) for connectivity between my various home sensors and actuators. Data comes in on TCP sockets, and is routed to charting apps like graphite/grafana, or to a local data store, to other APIs (like turning on/off X10 devices), or sometimes to external apps like Xively,
Has anyone thought about or have any ideas about how these two applications might work together?
Can huginn agents work with TCP Sockets?
Thanks for any tips,
Hey @TinajaLabs, nodered looks quite interesting. We have a MQTTAgent that I believe people use for home automation. It would also be straightforward to add TCP support to Huginn, someone just needs to finish #111. You might ask @CloCkWeRX or @knu about MQTT.
There is already a JabberAgent that can send Jabber messages but the opposite is missing.
An Agent that listens for incoming messages and spits them out as event would be cool!
Would a ZoneMinder agent be possible?
@K1773R That would likely be pretty straightforward to add.
@mstinaff Probably? Assuming ZoneMinder has a reasonable API.
Hey! I'm thinking about writing a Firebase agent. Are there any existing agents that interact with databases that I might want to look at for reference?
@alias1 @cantino Maybe the dropbox agent should be marked as done, cause of #582 and #572?
Yup @bennlich, thanks!
@bennlich A Firebase Agent would be awesome. Want to make a new issue to discuss it?
Could you add my Jabber idea (above) to the Backlog?
Added it @K1773R, thx!