Sidekick is a live application debugger that lets you troubleshoot your applications while they keep on running

Overview

Sidekick Licence  Sidekick Discord Channel  Foresight monitoring  Sidekick Sandbox 

Sidekick - Like Chrome DevTools for your backend, now open source | Product Hunt
Table of Contents
  1. What is Sidekick?
  2. Why Sidekick?
  3. Features
  4. Who should use Sidekick?
  5. How does Sidekick work?
  6. Getting Started
  7. Sidekick Ecosystem
  8. Contributing
  9. Questions? Problems? Suggestions?
  10. Contact

What is Sidekick?

Sidekick is a live application debugger that lets you troubleshoot your applications while they keep on running.

Add dynamic logs and put non-breaking breakpoints in your running application without the need of stopping & redeploying.

Sidekick Open Source is here to allow self-hosting and make live debugging more accessible. Built for everyone who needs extra information from their running applications.

Sidekick Actions:

Sidekick has two major actions; Tracepoints & Logpoints.

  • A tracepoint is a non-breaking remote breakpoint. In short, it takes a snapshot of the variables when the code hits that line.
  • Logpoints open the way for dynamic(on-demand) logging to Sidekick users. Replacing traditional logging with dynamic logging has the potential to lower stage sizes, costs, and time for log searching while adding the ability to add new logpoints without editing the source code, redeploying, or restarting the application.

Supported runtimes: Java, Python, Node.js

To learn more about Sidekick features and capabilities, see our web page.

(back to top)

Why Sidekick?

You can use Sidekick in any stage of your development for your live debugging & logging needs. With Sidekick you can:

  • Debug your remote application (monoliths or microservices on Kubernetes, Docker, VMs, or Local) and collect actionable data from your remote application.
  • Add logs to your production apps without redeploying or restarting
  • Cut your monitoring costs with on-demand & conditional logpoints & tracepoints
  • On-board new developers by showing how your apps work using real-time data.
  • Observe Event-Driven Systems with ease
  • Programmatically control where and when you collect data from your applications
  • Either use Sidekick's Web IDE, VS Code & IntelliJ IDEA extensions to control your Sidekick Actions or use headless clients to bring Sidekick to your workflow in any way you want!
  • Evaluate the impact of an error on applications with integrated distributed tracing.
  • Collaborate with your colleagues by sharing snapshots taken by Sidekick.
  • Reduce the time spent context-switching between different tools.

All these with almost no overhead. PS: Check out our benchmark blogs

(back to top)

Features

  • Conditions & custom hit limits for your logpoints and tracepoints -> collect only what you need
  • Mustache powered expression system for logpoints -> easily add variable data to your logs context
  • Customizable agents -> configure how your agents work, define depth and frame numbers
  • Aggregate your collected data with Thundra APM and Open-telemetry traces
  • Collect errors automatically and send them to your target of choice (will be available at 30th Aug)
  • Define custom data redaction functions to control what is being collected (Node.js only)
  • Control your logpoints and tracepoints using programmatically
  • Work with your collected data in your way using Sidekick clients

(back to top)

Who should use Sidekick?

While utilizing log data seems the most obvious choice for debugging a remote application, Sidekick provides an extra edge with a seamless debugging experience that is similar to debugging an application on your local environment.

*you*

Whether you're a developer, testing software engineer, or QA engineer, Sidekick is here to help you find the root cause of the errors.

(back to top)

How does Sidekick work?

Sidekick consists of 3 layers; The broker is the central unit of Sidekick. It controls all the data flow between clients and agents. This very repository contains the Sidekick broker.

Agents are the layer where Sidekick actions meet with your applications. Agents deployed with your software lets you collect snapshot data and generate dynamic logs without modifying your code. Agents get orders from clients and start listening to the targeted lines with given properties. Then whenever your code hits a logpoint or a tracepoint, agents collect stack & log data and send them to the clients via the broker. Currently, we have agents for Java, Python & Node.js runtimes.

Clients let you interact with the agents. They send commands to agents via the broker and let you control your tracepoints & logpoints. Clients come in many different ways:

  • The first one is Sidekick Web IDE, which you can use with our SaaS & on-prem versions, it lets you collaborate with other developers, and control your agents, workspaces & users from your browser. Since it is a web app, it does not require any installation. To learn more about Sidekick SaaS & On-prem features and capabilities, see our web page.
  • Secondly, we have our IDE extensions. They enable you to control your agents with the comfort of your IDE. Currently, we have extensions for Visual Studio Code & IntelliJ IDEA. Check out the Clients section below.
  • Last but not least, you can also use Sidekick with a headless approach. Sidekick Rest API lets you apply CRUD operations over logpoints & tracepoints via HTTP protocol and other clients like Sidekick Node.js Client lets you control your agents programmatically and make use of your collected data using code.

(back to top)

Getting Started

The simplest way to use Sidekick is to create an account on Sidekick Cloud. For the self-hosted version, you can either build Sidekick yourself or use our Docker image.

Note
Make sure docker daemon is running.

Running Sidekick using our Docker image

  1. Configure Environment Variables

    1. Go to the docker folder under the project
    2. Open .env file via any text editor
      1. Set your secret token (you can set any value, this will be your master key)
        1. API_TOKEN, BROKER_CLIENT_AUTHTOKEN and BROKER_TOKEN must be the same, otherwise, you can’t connect your apps and your client
      2. Set MySQL secrets
        1. Set MySQL root password (MYSQL_ROOT_PASSWORD)
        2. Set MySQL user (MYSQL_USER, SPRING_DATASOURCE_USERNAME)
        3. Set MySQL password (MYSQL_PASSWORD, SPRING_DATASOURCE_PASSWORD)
  2. Running Application Stack

    • Go to the docker folder under the project

    • Run command docker-compose up -d and wait for a minute

    • App is ready

    • You can connect to the broker using the url

      ws://:7777

    • You can see the API's swagger interface at

      http://:8084/swagger-ui.html

Building Sidekick

  1. Build Service Images

    1. Build Sidekick Broker Image
      1. Go to sidekick/sidekick-broker-app folder under project
      2. Execute release.sh
    2. Build Sidekick Api Image
      1. Go to sidekick/sidekick-api folder under project
      2. Execute release.sh

Now that your broker is ready, you need to install your agents & clients to start using Sidekick. Check out them below.

To learn more see our docs.

(back to top)

Sidekick Ecosystem

Documentation

(back to top)

Agents

Check out docs to learn how you can use agents with Sidekick Open Source!

Note: Agents are going open-source too! ETA: 30th of Aug

(back to top)

Clients

Check out docs to learn how you can use clients with Sidekick Open Source!

(back to top)

Usage Examples

Check out docs for more!

(back to top)

Sidekick Recipes

  1. Ingest your Sidekick logs & snapshots to Loki. https://github.com/boroskoyo/sidekick-loki

    Related blog post: Sidekick Recipes #2: Send logs to Loki -Add missing logs to your running microservices. Easy as 1–2–3

  2. Send your collected tracepoint & logpoint events to Elasticsearch https://github.com/boroskoyo/sidekick-elastic

    Related blog post: Sidekick Recipes #1: Elasticsearch Ingest

(back to top)

Recent Publications

(back to top)

Contributing

Checkout CONTRIBUTING.md

(back to top)

Questions? Problems? Suggestions?

To report a bug or request a feature, create a GitHub Issue. Please ensure someone else has not created an issue for the same topic.

(back to top)

Contact

Reach out on the Discord. A fellow community member or Sidekick engineer will be happy to help you out.

(back to top)

Comments
  • logpoint not working after edit with nodejs agent

    logpoint not working after edit with nodejs agent

    I tried the demo project https://github.com/boroskoyo/sidekick-nodejs-quickstart Following the instruction, and can get tracepoint working, but logpoint seems very unstable. After adding a logpoint, it only work occasionally. Even a logpoint is working, if you edit it and change the log expression, the change won't be effective. More info: the issue above occurs on Mac. I tried the same on windows, and the logpoint actually works on the demo project. Still have a small issue of refreshing the logpoint events in VSCode. I have to click on the logpoint to refresh the events. The refresh icon button doesn't work.

    bug 
    opened by sunnyy02 5
  • Mismatched typing for nodejs agent

    Mismatched typing for nodejs agent

    While setting up the agent using code method in typescript, faced with this error.

    image

    In documentation page, it only mention that apiKey is required. https://docs.runsidekick.com/installation/installing-agents/node.js/installation

    In the typing for the config @runsidekick/sidekick-agent-nodejs/dist/config/ConfigNames.d.ts image

    That two variable should be made optional.

    opened by PhakornKiong 2
  • fix(sec): upgrade org.json:json to 20180130

    fix(sec): upgrade org.json:json to 20180130

    What happened?

    There are 1 security vulnerabilities found in org.json:json 20160810

    What did I do?

    Upgrade org.json:json from 20160810 to 20180130 for vulnerability fix

    What did you expect to happen?

    Ideally, no insecure libs should be used.

    The specification of the pull request

    PR Specification from OSCS

    opened by zhoumengyks 1
  • fix(sec): upgrade io.springfox:springfox-swagger-ui to 2.10.0

    fix(sec): upgrade io.springfox:springfox-swagger-ui to 2.10.0

    What happened?

    There are 1 security vulnerabilities found in io.springfox:springfox-swagger-ui 2.9.2

    What did I do?

    Upgrade io.springfox:springfox-swagger-ui from 2.9.2 to 2.10.0 for vulnerability fix

    What did you expect to happen?

    Ideally, no insecure libs should be used.

    The specification of the pull request

    PR Specification from OSCS

    improvement 
    opened by vvsd 1
  • Add probe (tracepoint or logpoint) tagging capability

    Add probe (tracepoint or logpoint) tagging capability

    Support tagging probes.

    • User can add multiple tags to probes via broker.
    • Tagged probes become permanent, and they remain until user remove or untag them.
    • User can enable/disable tags via broker.
    feature 
    opened by yasinkalafat 1
  • docs-style: Note notation uses new gtihub feature

    docs-style: Note notation uses new gtihub feature

    Hey Team, this is just a minor style change to the readme file that makes the note pop out more while reading.

    Github recently released a new feature for marking and highlighting notes/warnings in MD files https://github.com/community/community/discussions/16925

    opened by anugrahsinghal 1
  • Unable to connect using nodejs agent

    Unable to connect using nodejs agent

    Followed the documentation where the package is installed and initialized using

    import * as SidekickDebugger from '@runsidekick/sidekick-agent-nodejs';
    
      SidekickDebugger.start({
        apiKey: '<apikey>',
        logLevel: 'debug',
      });
    

    image

    nodejs v16.13.2 express v4.17.1 @runsidekick/sidekick-agent-nodejs": "^0.0.11

    opened by PhakornKiong 1
  • Support Broker side env management, attach/detach config

    Support Broker side env management, attach/detach config

    New Handlers

    • AttachRequestHandler: Attach selected applications (Activate communication between agent and broker)
    • DetachRequestHandler: Detach selected applications (Deactivate communication between agent and broker)
    • UpdateConfigRequestHandler: Update agent configurations
    • GetConfigRequestHandler: Send last saved configuration to agents
    feature 
    opened by yasinkalafat 0
  • Bump jackson-databind from 2.13.4 to 2.13.4.1 in /sidekick

    Bump jackson-databind from 2.13.4 to 2.13.4.1 in /sidekick

    Bumps jackson-databind from 2.13.4 to 2.13.4.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Fix(sec): upgrade org.json:json to 20180130

    Fix(sec): upgrade org.json:json to 20180130

    What happened?

    There are 1 security vulnerabilities found in org.json:json 20160810

    What did I do?

    Upgrade org.json:json from 20160810 to 20180130 for vulnerability fix

    What did you expect to happen?

    Ideally, no insecure libs should be used.

    The specification of the pull request

    PR Specification from OSCS

    opened by zhoumengyks 0
  • fix(sec): upgrade io.netty:netty-all to 4.1.44.Final

    fix(sec): upgrade io.netty:netty-all to 4.1.44.Final

    What happened?

    There are 1 security vulnerabilities found in io.netty:netty-all 4.1.43.Final

    What did I do?

    Upgrade io.netty:netty-all from 4.1.43.Final to 4.1.44.Final for vulnerability fix

    What did you expect to happen?

    Ideally, no insecure libs should be used.

    The specification of the pull request

    PR Specification from OSCS

    opened by chncaption 0
Owner
Sidekick
Troubleshoot problems where and when they happen, without stopping, rebuilding, or redeploying applications.
Sidekick
Log sourcing is method of trying to map all the ERROR and WARN logs you have in your system in a cost effective way.

log-sourcing Log sourcing is method of trying to map all the ERROR and WARN logs you have in your system in a cost effective way. The basic idea is th

Shimon Magal 12 Apr 19, 2021
Your window into the Elastic Stack

Kibana Kibana is your window into the Elastic Stack. Specifically, it's a browser-based analytics and search dashboard for Elasticsearch. Getting Star

elastic 18.1k Jan 2, 2023
Logstash - transport and process your logs, events, or other data

Logstash Logstash is part of the Elastic Stack along with Beats, Elasticsearch and Kibana. Logstash is a server-side data processing pipeline that ing

elastic 13.2k Jan 5, 2023
P6Spy is a framework that enables database data to be seamlessly intercepted and logged with no code changes to the application.

p6spy P6Spy is a framework that enables database data to be seamlessly intercepted and logged with no code changes to existing application. The P6Spy

p6spy 1.8k Dec 27, 2022
A Java library that facilitates reading, writing and processing of sensor events and raw GNSS measurements encoded according to the Google's GNSS Logger application format.

google-gnss-logger This library facilitates reading, writing and processing of sensor events and raw GNSS measurements encoded according to the Google

Giulio Scattolin 5 Dec 21, 2022
Development Driven Testing (DDT) lets you generate unit tests from a running application. Reproduce a bug, generate a properly mocked test

DDTJ: It kills bugs DDT is the flip side of TDD (Test-driven development). It stands for "Development Driven Tests". Notice that it doesn’t contradict

null 4 Dec 30, 2021
A simple live streaming mobile app with cool functionalities and time extension, and live chat. With a payment system integrated. Server is designed with socket.io to give you full flexibility.

Video Live Streaming Platform Android A simple live streaming mobile app with cool functionalities and time extension, and live chat. With a payment s

Dev-Geek 2 Dec 16, 2022
MixStack lets you connects Flutter smoothly with Native pages, supports things like Multiple Tab Embeded Flutter View, Dynamic tab changing, and more. You can enjoy a smooth transition from legacy native code to Flutter with it.

中文 README MixStack MixStack lets you connects Flutter smoothly with Native pages, supports things like Multiple Tab Embeded Flutter View, Dynamic tab

Yuewen Engineering 80 Dec 19, 2022
Fall is an app that lets your phone scream if you throw it somewhere.

Fall Fall is an app that lets your phone scream if you throw it somewhere. License Copyright (C) 2022 Gh05t-1337 This program is free software: you ca

null 15 Oct 31, 2022
Just-In-Time Access is an AppEngine application that lets you manage just-in-time privileged access to Google Cloud projects.

Just-In-Time Access Just-In-Time Access is an AppEngine application that lets you manage just-in-time privileged access to Google Cloud projects. Syno

Google Cloud Platform 36 Jan 3, 2023
A custom minimap that displays resources all around you while you adventure through Aeternum!

New-World-MiniMap A custom minimap that displays resources all around you while you adventure through Aeternum! Download Download Page Minimap.rar Oth

Mal Ball 7 Dec 9, 2021
A Java 8+ Jar & Android APK Reverse Engineering Suite (Decompiler, Editor, Debugger & More)

Bytecode Viewer Bytecode Viewer - a lightweight user friendly Java Bytecode Viewer. New Features WAR & JSP Loading JADX-Core Decompiler Fixed APK & de

Kalen (Konloch) Kinloch 13.5k Jan 7, 2023
ijrd - internal java runtime debugger (loads through java agents LOL)

ijrd ijrd - internal java runtime debugger (loads through java agents LOL) this actually requires brain to build and then setup little guide to setup

null 6 Jan 28, 2022
Redstone analyzer and debugger

Minecraft Multimeter Mod Install and use This mod runs on Fabric, so make sure you have that installed. Download the Fabric API if you don't have it a

Antoni Spaanderman 1 Dec 28, 2021
WordleCompanion - A tool to help you determine those hard-to-guess words while doing your daily Wordle puzzles.

A tool to help you determine those hard-to-guess words while doing your daily Wordle puzzles. How it works Enter the 5-letter word you

Ken Vaczi 1 Jan 22, 2022
evilzip lets you create a zip file(with password) that contains files with directory traversal characters in their embedded path.

evilzip logs 20210701 修改权限问题,让解压后的文件默认就有读写执行的权限。 About evilzip lets you create a zip file(with password) that contains files with directory traversal

鸭王 87 Dec 11, 2022
Elide is a Java library that lets you stand up a GraphQL/JSON-API web service with minimal effort.

Elide Opinionated APIs for web & mobile applications. Read this in other languages: 中文. Table of Contents Background Documentation Install Usage Secur

Yahoo 921 Jan 3, 2023
A mod that lets you create "contracts" that transfer ownership of pets and other tameable entities.

Pet Transfer A simple mod for Fabric that lets you create contracts that can transfer ownership of pets and other tameable creatures. No Forge port pl

Emirikol 2 Jan 14, 2022
Fast_Responder is a service that lets you quickly create an Http request responder

Fast_Responder is a service that lets you quickly create an Http request responder. The transponder can receive any request path configured and determine the request parameters according to your configuration to return different results. In addition to processing requests, the transponder can also make Http requests to any request address based on the latency, request headers, and parameters you configure. In essence, fast_responder is a dynamic mock service.

null 8 Jan 26, 2022