Chore tool help to send request with templates and customizable flow diagram.

info page of ui

Template playground go to

If you need any feature, find a bug or fixing something send pull request or open issue we will handle it.

Fast Start and Use

docker run -d --name postgres -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres:14.5-alpine
docker run -it --rm --name chore -p 8080:8080 -e STORE_HOST= -e STORE_SCHEMA=public

Open browser and go to http://localhost:8080

Login with admin:admin and after that create your flow, template and run it.



Chore uses PostgreSQL database.

First initialization user and password is admin:admin, changable with configuration


secret: thisisfordevelopmenttestsecret
  name: admin
  password: admin
  type: postgres
  schema: chore
  host: ""
  port: "5432"
  user: postgres
  # password: test
  dbName: postgres
  timeZone: UTC
  # also you can set with DSN name, if DSN name exists other values not using
  # dbDataSource: "postgres://[email protected]:5432/postgres?application_name=testdb"

# migrate same as store and copy undefined part in store value
  password: formigration
  user: migration

# BasePath just required for swagger ui, this tool use relative paths at all
# basePath: /chore/ # to set
# host: # default
# port: 8080 # default
# logLevel: info # default

Secret is important for tokens, to generate own token, use one of this commands:

With openssl

openssl rand -base64 32 | tr -- '+/' '-_'

With linux shell

dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64 | tr -d -- '\n' | tr -- '+/' '-_'; echo

WARN when secret changed, all previous tokens not usable after that.

Set config file path to CONFIG_FILE environment variable.

Chore can get your configurations from vault, consul, file or with environments values.

To work with vault and consul set PREFIX_VAULT and PREFIX_CONSUL to show the path of the config file and APP_NAME default is chore. Details check igconfig library to see how it works.

And run chore on container or binary.

Connect to the chore UI with browser and add template, authentication and design own control flow.

Template, Auth, Control information


Template is a text file format. Go template and sprig functions supported.

For example using some functions and flow inside of template.

ID: {{uuidv4}}
Name: {{.name | b64enc}}
{{if eq .name "golang" }}
Link: DeepCore

{{- range .specs}}
{{.name}} {{repeat .point "⭐"}}
{{- end}}

In here name is a key of a map or struct and it print value.

For testing in a playground try, this webapp developed by us.


This give us information about secret headers after that use with request flow node.

With basic-auth(username and password) use this header Authorization: Basic <base64 username:password> but in 2FA status this cannot work so use Bearer Token(personal access token PAT) most of cases or ask IT to get new user which can work with api.

With Personal access token, generate token in the profile page and use with Authorization: Bearer <TOKEN>.


Flow diagram to create your algorithm in UI.

To start flow send request /send endpoint as POST request. Server will check endpoint and control values with your JSON/YAML payload.

Example: (generate token in token section of chore)

curl -X POST -H "Authorization: Bearer ${TOKEN}" -d 'name: deepcore' "http://localhost:8080/api/v1/send?control=try&endpoint=test"

Or you can send as json value -d '{"name":"deepcore"}'

Or send file directly, (when sending yaml format always use binary format due to yaml has new line and ascii format not hold that values)

curl -X POST -H "Authorization: Bearer ${TOKEN}" --data-binary @values.yml "http://localhost:8080/api/v1/send?control=try&endpoint=test"


Build and run


Required services (PostgreSQL) before to run.

cd _example/chore
docker-compose up
# for close run
# docker-compose down

Run command

# ./ --run
# config file can be TOML, YAML or JSON
export CONFIG_FILE=_example/config/config.yml
go run cmd/chore/main.go


cd _web
pnpm run dev -- --host

After this step just go to the localhost:3000 address.

NOTE frontend(localhost:3000) has proxy and /api path request goes to the server.


Build with goreleaser

goreleaser release --snapshot --rm-dist

Build with script

Generate swagger (don’t need if you didn’t change related codes)

./ --swag

Build project to generate binary

./ --build-all

Build docker

./ --docker-build

Run image

# run postgres before to start
# to get latest build image name
IMAGE_NAME=$(./ --docker-name)
docker run -it --rm --name="chore" -p 8080:8080 \
  --add-host=postgres:$(docker network inspect bridge | grep Gateway | tr -d '" ' | cut -d ":" -f2) \
  -v ${PWD}/_example/config/docker.yml:/etc/chore.yml \
Dummy-Whoami Server for Test
docker run --rm -it --name="whoami" -p 9090:80 traefik/whoami
Fill tables

Use chore’s record script to download/opload operation

Before to run script export JWT_KEY variable with own chore token.

Change -h (help) parameter to any arguments of the shell script.

export JWT_KEY=""
curl -fksSL | bash -s -- -h

Or first download it and after run.

curl -O -fksSL && chmod +x

Example arguments

# download just one item
--url http://localhost:8080 --mode download --auth jira
# update all auths, controls and templates files
--url http://localhost:8080 --mode download --auths --controls --templates
# upload all auths folder
--url http://localhost:8080 --mode upload --auths
# upload just one item
--url http://localhost:8080 --mode upload --template confluence/ter

Get temporary JWT key with username and password

export JWT_KEY="$(curl -fksSL -u admin:admin http://localhost:8080/api/v1/login?raw=true)"


  • Activate group information
  • Support custom method entries


View Github